Visual StudioとLinux(gcc)環境でコンパイル/実行が必要なコードをいくつか記述しようとしています。MIN/MAXビジュアルスタジオで動作しないマクロ
#define __MAX(a,b) \
({ __typeof__ (a) _a = (a); \
__typeof__ (b) _b = (b); \
_a > _b ? _a : _b; })
:私はややあいまいなエラーを取得しています、と誰もが私が欠けているものに私を指すことができれば、私は思ったんだけど窓の私のファイルをコンパイルしようとすると...私は、標準的なマクロを持っていますそして、私はそれを起動しようとすると:
int x = __MAX(0, 2);
私はこの行を指して、Visual Studioでexpected an expression
エラーが発生します。私はビジュアルスタジオを初めて使っているので、これについて何が好きではないか分かりません。誰かが私が間違っていることを指摘できますか?
質問に答えることはできませんが、100%移植可能な 'std :: min'と' std :: max'を使わないのはなぜですか? – NathanOliver
@ NathanOliver残念ながら、 ''は 'min'と' max'のマクロを持っているので、 'std :: min'と' std :: max'はWindowsで動作しません。うん、それは陽気です。 IIRCの場合、 ' 'を含める前に定義しておくとマクロを無効にするマクロがあります。いずれにせよ、それは吸う。 –
Mysticial
@NathanOliver No.「」は、「min」と「max」という名前のマクロを定義します。だから彼らはマクロを 'std :: min'に置き換えて' std :: a
Mysticial