我正在与C和Postgres合作,我们正在使用Postgres API来创建一些内部C函数。
我已经把所有东西编译得很好,但是我希望有人可以解释为什么以下函数不能在MSVC中编译但是它在GCC编译得很好:
功能声明:
static bool func1(const u_char *src, int length);
error C2061: syntax error : identifier 'func1'
error C2059: syntax error : ';'
error C2059: syntax error : 'type'
为了让它编译,我将它从静态bool更改为static int。 (因为它们在C中是等价的)。现在它工作正常。
静态bool在gcc中编译得很好。是否有一些gcc在引擎盖下做这个语法是正确的?或者这是MSVC的错误?
编译器信息:
所有版本都是64位
Visual Studio 2010 Professional
gcc 4.4.7
其他信息:
我将项目设置为"编译为C代码"
我正在将它编译成DLL。
简而言之,MSVC不能很好地支持C.在C99之前的版本中,bool不是C中的数据类型。 MSVC仅支持C89。
从bool更改为int可以解决这个特定问题。