C++ 需要解决以下问题:错误C2059:语法错误';常数';

C++ 需要解决以下问题:错误C2059:语法错误';常数';,c++,C++,我昨天问了以下问题: 代码是: enum {false,true}; typedef char bool; 我现在知道我为什么会出错,但我没有解决问题的办法。 如果你对C++和C项目都使用相同的代码,那么你必须根据编译器条件删除这些声明。这可以通过如下预处理器完成: #if !defined(__cplusplus) && !defined(__bool_true_false_are_defined) enum {false,true}; typedef char bool;

我昨天问了以下问题:

代码是:

enum {false,true};
typedef char bool;
我现在知道我为什么会出错,但我没有解决问题的办法。
如果你对C++和C项目都使用相同的代码,那么你必须根据编译器条件删除这些声明。这可以通过如下预处理器完成:

#if !defined(__cplusplus) && !defined(__bool_true_false_are_defined)
enum {false,true};
typedef char bool;
#endif

编译C++编译器时,预处理器宏>代码>·yc+pPLUS PLUS < /C> >将被定义,但它永远不会在C编译器中定义。如果包含定义布尔类型和值的

,则会定义预处理器宏
\u bool\u true\u false\u


事实上,我建议你不要自己做声明,但是如果你没有编译C++编译器,那么只需简单地包含<代码> <代码>。

简单地删除这两行。任何使用<代码> BoOL ,<代码>真< /COD>或<代码> false <代码>的代码仍然会被编译,因为这些是C++中的关键字。
唯一的问题可能是,如果某些邪恶的代码依赖于此
bool
类型来存储其他值。但是,这样的代码几乎肯定是错误的。< /P>如果你在C++中编码,你已经有了<代码> BOOL ,<代码>真< /COD>和<代码> false <代码>。你想实现什么?我试图编译C++编译器中的代码,然后构建一个DLLIT无效的C++代码,这样你就不能用C++编译器编译它。为什么你试图用C++编译器编译这2行?@ ReZaaydiPaa:你不能:用关键字作为名字是不可能的。如果要使用布尔类型,只需删除它们并使用内置的
bool
true
false
关键字即可。如果您出于某种奇怪的原因想要自己的非完全布尔类型,请使用不同的名称。然后您必须修改这两行,或者使用预处理器将其从构建中删除(
\ifdef\uuuucplusplus…
),尽管这在C中也是一个坏主意,因为它会与
@MikeSeymour Correct冲突,我得到了以下错误:错误LNK2019:未解析的外部符号“char const*uu cdecl nameOnly(char const*)”@RezaAyadipanah,这与这个问题完全无关,应该是它自己的问题。但是作为一个免费提示,您可能需要检查您需要的所有源/对象/库文件是否确实在您的项目中。我得到以下错误:错误LNK2019:未解析的外部符号“char const*u cdecl nameOnly(char const*)”@rezaayadpanah:这是一个无关的问题。最可能的情况是,该函数的定义丢失,或者包含该函数的文件未链接到生成中。也许会有帮助。