[cppll:1111] <tips?>使えないマクロ
- Subject:
- [cppll:1111] <tips?>使えないマクロ
- From:
- tsutsumi‐at‐pf.highway.ne.jp <tsutsumi@...>
- Date:
- Fri, 8 Feb 2002 01:34:10 +0900 (JST)
- X-Mailer:
- FreeML Web Mailer XP; SP2
- Message-Id:
- <5326833.1013099650842‐at‐www2.local.freeml.net>
堤です。
コンパイル時に C と C++ のどちらかでコンパイルされたか判別
するのに
#ifdef __cplusplus
... <--- C++ コード
#else
... <--- C コード
#endif
とするのは良く知られていると思いますが、実行時に C と C++
のどちらかでコンパイルされたかを判別する方法は知られていな
いと思うので紹介します。
#でも、殆んど使われないでしょうけどねぇ・・・。
#define iscplusplus (sizeof(char) == sizeof('A'))
使い方は
#include <stdio.h>
#define iscplusplus (sizeof(char) == sizeof('A'))
int main()
{
if(iscplusplus) {
printf("このコードは C++ コンパイラでコンパイルされました.\n");
} else {
printf("このコードは C コンパイラでコンパイルされました.\n");
}
return 0;
}
見たいな感じです。
これは文字定数のサイズが C では int 型のサイズに等しいのに
対し、C++ では char 型のサイズに等しい事を利用しています。
ではでは。
コンパイル時に C と C++ のどちらかでコンパイルされたか判別
するのに
#ifdef __cplusplus
... <--- C++ コード
#else
... <--- C コード
#endif
とするのは良く知られていると思いますが、実行時に C と C++
のどちらかでコンパイルされたかを判別する方法は知られていな
いと思うので紹介します。
#でも、殆んど使われないでしょうけどねぇ・・・。
#define iscplusplus (sizeof(char) == sizeof('A'))
使い方は
#include <stdio.h>
#define iscplusplus (sizeof(char) == sizeof('A'))
int main()
{
if(iscplusplus) {
printf("このコードは C++ コンパイラでコンパイルされました.\n");
} else {
printf("このコードは C コンパイラでコンパイルされました.\n");
}
return 0;
}
見たいな感じです。
これは文字定数のサイズが C では int 型のサイズに等しいのに
対し、C++ では char 型のサイズに等しい事を利用しています。
ではでは。
▼ スレッド
- 1111: コンパイル時に C と C++ のどちらかでコンパイルされたか判別 するのに とするのは良く知られ tsutsumi‐at‐pf.highway.ne.jp
- └1112: で,いいと思ふ… -[ Tietew ]--- tietew‐at‐tietew.net / tietew‐at‐raug.net ------ ■Tietew Windows Lab. http://www.tietew.net/ Tietew
- └1114: あー、確かに。 最初、関数で書いていて、 int iscplusplus() { return sizeof(char) == sizeof('A'); } だった tsutsumi‐at‐pf.highway.ne.jp