2 つのマクロのいずれかが定義されている場合に含めたいコードがあります。
#ifdef MACRO1 || MACRO2
void foo()
{
}
#endif
Cでこれを達成するにはどうすればよいですか?
2 つのマクロのいずれかが定義されている場合に含めたいコードがあります。
#ifdef MACRO1 || MACRO2
void foo()
{
}
#endif
Cでこれを達成するにはどうすればよいですか?
に加え#ifdef
て、プリプロセッサはより一般的な#if
命令をサポートしています。実際、#ifdef MACRO
は のショートカットです#if defined(MACRO)
。defined
は、マクロが定義されている場合に 1 を返す「プリプロセッサ関数」です。したがって、次のことができます。
#if defined(MACRO1) || defined(MACRO2)
void foo()
{
}
#endif
#if defined(MACRO1) || defined(MACRO2)
ここでは、必要に応じて NOT バージョン:
#if !defined(MACRO1) && !defined(MACRO2)
...
#endif
#if defined(Macro 1) + defined(Macro 2) == 1
<Code>
#endif