Это объявление функции выдает ошибку: ожидается ';', ',' или ')' перед '=' токеном - PullRequest
1 голос
/ 28 апреля 2011
#include <libxml/xmlmemory.h>
#include <libxml/parser.h>
static xmlDocPtr importSettings(char file[]="CsSettings.xml"){}

Это не так сложно, почему всегда выдает эту ошибку?

test.c:3: error: expected ‘;’, ‘,’ or ‘)’ before ‘=’ token

Я неправильно его компилирую?

Ответы [ 2 ]

6 голосов
/ 28 апреля 2011

C не имеет значений параметров по умолчанию.Вам нужно скомпилировать ваш файл как C ++.

Edit :

Так что вы не хотите использовать C ++.(Хорошо, потому что я тоже не хочу использовать C ++.) Вот один разумный способ сделать то же самое:

static xmlDocPtr importSettings(char file*)
{
    if (file == NULL)
    {
        file = "CsSettings.xml";
    }
    /* etc. */
}

Таким образом, если вы хотите использовать значение по умолчанию, просто передайте NULL длянастройки импорта.

Другой вариант - добавить #define DEFAULT_XML_FILE "CsSettings.xml" где-нибудь в заголовке, а затем попросить абонентов передать DEFAULT_XML_FILE, если они хотят использовать значение по умолчанию.

4 голосов
/ 28 апреля 2011

C не имеет значений по умолчанию для аргументов. C ++ имеет их , хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...