Это объявление функции выдает ошибку: ожидается ';', ',' или ')' перед '=' токеном
#include <libxml/xmlmemory.h>
#include <libxml/parser.h>
static xmlDocPtr importSettings(char file[]="CsSettings.xml"){}
Это не так сложно, почему всегда выдает эту ошибку?
test.c:3: error: expected ‘;’, ‘,’ or ‘)’ before ‘=’ token
Я неправильно это компилирую?
2 ответа
Решение
C не имеет значений параметров по умолчанию. Вам нужно скомпилировать ваш файл как C++.
Редактировать:
Так что вы не хотите использовать C++. (Хорошо, потому что я тоже не хочу использовать C++.) Вот один разумный способ сделать то же самое:
static xmlDocPtr importSettings(char file*)
{
if (file == NULL)
{
file = "CsSettings.xml";
}
/* etc. */
}
Таким образом, если вы хотите использовать значение по умолчанию, просто передайте NULL настройкам импорта.
Другой вариант - добавить #define DEFAULT_XML_FILE "CsSettings.xml"
где-то в вашем заголовке, а затем требовать, чтобы абоненты передавали DEFAULT_XML_FILE
если они хотят использовать по умолчанию.
C не имеет значений по умолчанию для аргументов. C++ имеет их, хотя.