此函数声明在'='标记之前抛出错误:expected';',','或')'

时间:2011-04-28 13:08:06

标签: c function default-value

#include <libxml/xmlmemory.h>
#include <libxml/parser.h>
static xmlDocPtr importSettings(char file[]="CsSettings.xml"){}

那不是那么复杂,为什么总是抛出这个错误?

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

我编译错了吗?

2 个答案:

答案 0 :(得分:6)

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,如果他们想使用默认值。

答案 1 :(得分:4)

C在参数上没有默认值。 C++ has them,但是。