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 に答える