各種コンパイラで C 言語の整数型リテラル値とマクロ定数の論理和を試す2018年10月02日 11時12分00秒

FreeBSD の LLVM で C 言語の整数型リテラル値とマクロ定数の論理和を試して警告が出たので、コンパイラが警告出来なくなるコードを追ってみた。LLVM 以外のコンパイラはわざわざ定数の論理和を警告しないので、こちらも警告は出ないだろう。

まずは、AIX の xlc コンパイラから。

aix% cat logical-and-macro-int.c 
#define TWO 2
int main()
{   
    return 1 && TWO;
} 
aix% xlc logical-and-macro-int.c 
aix%

次は Solaris の cc コンパイラ。

solaris% cat logical-and-macro-int.c 
#define TWO 2
int main()
{   
    return 1 && TWO;
} 
solaris% cc logical-and-macro-int.c 
solaris%  

次は、Linux の gcc。

linux% cat logical-and-macro-int.c
#define TWO 2
int main()
{   
    return 1 && TWO;
} 
linux% cc logical-and-macro-int.c
linux%

どのコンパイラも警告を出さずにコンパイルする。

前回次回