【发布时间】:2019-02-06 17:21:27
【问题描述】:
我正在使用 C89 编译器(嵌入式系统)。
我遇到了一些 C 代码,其中一个翻译单元将变量定义为bool varName;,其中bool 是typedef 的unsigned char。另一个翻译单元 forward 声明变量如下:extern char varName;。
这显然是类型不匹配,是一个错误。我的问题是,这违反了什么确切的规则?我的下意识反应是它违反了 ODR,但只有一个定义,所以我不确定这是否违反了 ODR。
【问题讨论】:
-
您对以下哪种语言感兴趣?您说的是 C,但您列出了三个 C++ 标记。
-
我认为它不是有效的 C++,因为
bool本身就是一种类型。 -
您使用的是 C 还是 C++?
-
如果不清楚您讨论的是哪种语言和版本,这很难正确回答
-
char varName;是一个定义,而不仅仅是一个声明。