1

我正在尝试使用不同的编译器编译我的项目。我有一个稳定的项目编译版本,使用 ARM 4.41 编译器编译没有任何错误。我想用 ARM 5 编译器和 Win64 编译器编译完全相同的源代码。但是,如果源代码没有任何更改,只需将编译器从 ARM 4.41 切换到 ARM 5 && ARM 4.41 到 Win64,我就会收到 typedef 的以下错误。

我无法弄清楚,为什么它的行为如此..?

带有 typedef 的头文件 - a_stdtypes.h

#define _STD_TYPE_H
typedef unsigned char  bool; // Error #84: invalid combination of type specifiers
typedef unsigned char  bit8;
typedef unsigned short bit16;
typedef unsigned long  bit32;
4

2 回答 2

3

这不是合法的 C++ 代码。bool是语言的保留关键字 - 一种类型。你无法重新定义它的含义。不过,这将是合法的 C 代码。

于 2013-09-10T10:01:13.973 回答
1

我猜它是因为有人想为 C 定义 bool,然后有人想从 C++ 中使用它而写的。

一个更简洁的解决方案是使用 cplusplus 宏,如下所示:

#ifndef __cplusplus
typedef unsigned char  bool;
#endif
typedef unsigned char  bit8;
typedef unsigned short bit16;
typedef unsigned long  bit32;
于 2013-10-08T15:16:19.187 回答