C++というとマクロとユーザ定義リテラルが衝突した場合の扱いがよくわからんままである。やるなという話だが。
Conversation
Notices
-
ぼろんじ (boronology@social.penguinability.net)'s status on Monday, 12-Oct-2020 23:53:45 JST ぼろんじ - らりお・ザ・何らかの🈗然㊌ソムリエ repeated this.
-
ぼろんじ (boronology@social.penguinability.net)'s status on Monday, 12-Oct-2020 23:55:34 JST ぼろんじ #define SUFFIX "suffix"auto c = "prefix"SUFFIX;
みたいなの。
らりお・ザ・何らかの🈗然㊌ソムリエ repeated this. -
ぼろんじ (boronology@social.penguinability.net)'s status on Tuesday, 13-Oct-2020 00:01:10 JST ぼろんじ https://wandbox.org/permlink/ATP0hCtKrUUYHRpc ・GCCはプリプロセッサを優先してくれるので"prefix""suffix"になって通る。(警告は出る)・Clangは「C++11では間に空白を入れろ」といってコンパイルエラー・MSVCはプリプロセッサ後もマクロのSUFFIXが置換されないうえで「ユーザ定義リテラルが見つからない」としてコンパイルエラー仕様上はGCCが正しい、のか?