在LLVM項目source code of stdbool.h
,它讀取:#define X X在C中有什麼作用?
/* Don't define bool, true, and false in C++, except as a GNU extension. */
#ifndef __cplusplus
#define bool _Bool
#define true 1
#define false 0
#elif defined(__GNUC__) && !defined(__STRICT_ANSI__)
/* Define _Bool, bool, false, true as a GNU extension. */
#define _Bool bool
#define bool bool
#define false false
#define true true
#endif
在過去的4線有從#define X X
三條線。爲什麼要這麼做?它有什麼不同?難道這不會強制編譯器將true
替換爲true
?
downvoter可能想評論? – alk
不是我,但我猜想說一個預處理器指令是「真實的」讓你反對票。有些人堅持要求準確。 – john
@john:我意識到這一點,這就是爲什麼我把它放在引號中。但是它是預處理環境中的布爾表達式,不是嗎?你有另一種措辭的想法嗎? – alk