静态bool函数不在MSVC中编译,但在GCC中编译很好

时间:2014-11-07 13:51:44

标签: c visual-studio-2010 postgresql visual-c++ gcc

我正在与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。

This is a duplicate question

简而言之,MSVC不能很好地支持C.在C99之前的版本中,bool不是C中的数据类型。 MSVC仅支持C89。

从bool更改为int可以解决这个特定问题。

0 个答案:

没有答案