2016-12-09 3 views
0

stdbool.hが含まれ、このコード:stdbool.hます。#define TRUE TRUE

#if __cplusplus < 201103L 
/* Defining these macros in C++98 is a GCC extension. */ 
#define bool bool 
#define false false 
#define true true 
#endif 

はなぜgccの必要性は、標準C++の型を再定義するのでしょうか?

+0

本当の質問は、このヘッダーをC++ファイルに含める理由です。 '__cplusplus'が定義されていれば、それは除外されなければならないようです。おそらく、これらの定義は、Cプログラムや旧バージョンのコンパイラとの下位互換性のために存在するでしょうか? –

答えて

0

#define fnord fnordは一般に識別子fnordの処理方法を変更しませんが、#ifdef fnordは定義されたとおりにマクロを報告します。他のコードは

#ifndef true 
#define true 1 
#endif 

のような何かをする可能性がある場合#define true trueを持つことは、このような条件付きの定義をスキップする原因となります。

関連する問題