所以我对我继承的一些代码有疑问。此代码在纯 C 环境中构建良好,但现在我需要使用 C++ 来调用此代码。标题problem.h
包含:
#ifndef _BOOL
typedef unsigned char bool;
static const bool False = 0;
static const bool True = 1;
#endif
struct astruct
{
bool myvar;
/* and a bunch more */
}
当我将它编译为 C++ 代码时,我得到error C2632: 'char' followed by 'bool' is illegal
如果我将#include "problem.h"
in包装起来,我会得到同样的错误(我不明白,因为编译为 C 时extern "C" { ... }
应该没有关键字?)bool
我尝试从#ifndef _BOOL
to删除块#endif
,并编译为 C++,但出现错误:
error C2061: C requires that a struct or union has at least one member
error C2061: syntax error: identifier 'bool'
我只是不明白 C++ 编译器如何抱怨重新定义bool
,但是当我删除重新定义并尝试仅用于bool
定义变量时,它什么也找不到。
任何帮助是极大的赞赏。