Это объявление функции выдает ошибку: ожидается ';', ',' или ')' перед '=' токеном

#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++ имеет их, хотя.

Другие вопросы по тегам