【发布时间】:2014-03-24 20:16:21
【问题描述】:
我正在编写一个程序,我更喜欢用 C++ 编写,但是,我需要包含一个重新定义 bool 的 C 头文件:
# define false 0
# define true 1
typedef int bool;
显而易见的解决方案是编辑标题说:
#ifndef __cplusplus
# define false 0
# define true 1
typedef int bool;
#endif
但是,唉,因为图书馆是只读的,我不能。
有没有办法让 gcc 忽略这个 typedef?或者,我可以用 C++ 编写大多数函数,然后为这两个函数制作一个 C 包装器吗?或者,我应该接受它并用 C 写东西吗?
【问题讨论】:
-
如果那是
<stdbool.h>,您可以只使用#define适当的标签,它必须说它已经完成了它的工作。如果是 C,__bool_true_false_are_defined -
@chris
<stdbool.h>应该已经有自己的 c++ 守卫了 -
可能会有一些有用的东西:stackoverflow.com/questions/19377678/…
-
@Erbureth,但你不希望它发生一次。
-
@chris 我的意思是 c++ 守卫,而不是标准包括守卫