[解決済み】プリプロセッサディレクティブでOSをチェックする方法とは?
2022-04-04 16:39:58
質問
コンパイルされるオペレーティング・システムに応じて、私のコードが異なることをする必要があります。このようなものを探しています。
#ifdef OSisWindows
// do Windows-specific stuff
#else
// do Unix-specific stuff
#endif
このような方法はないのでしょうか?同じことをするのにもっといい方法はないでしょうか?
どのように解決するのですか?
その OS用定義済みマクロ のサイトには、非常に充実したチェックリストがあります。ここでは、そのうちのいくつかを、どこにあるのかのリンクとともに紹介します。
ウィンドウズ
_WIN32
32ビット、64ビットとも
_WIN64
64ビットのみ
__CYGWIN__
Unix(Linux、*BSD、ただしMac OS Xは除く)。
こちらをご覧ください 関連質問 このチェックを使用する際の落とし穴について。
unix
__unix
__unix__
Mac OS X
__APPLE__
クラシックにも使用
__MACH__
どちらも定義されているので、どちらかをチェックすればうまくいくはずです。
リナックス
__linux__
linux
時代遅れ(POSIX非対応)
__linux
時代遅れ (POSIXに準拠しない)
FreeBSD
__FreeBSD__
アンドロイド
__ANDROID__
関連
-
[解決済み】LEALアセンブリ命令は何をするのですか?
-
[解決済み】whileループの時間複雑性(Big O)はどうやったらわかるの?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] 配列の場合、なぜ a[5] == 5[a] になるのでしょうか?
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
-
[解決済み] C言語とC++の両方で有効なコードを、それぞれの言語でコンパイルすると、異なる動作になることがありますか?
-
[解決済み] Javaでオペレーティングシステムをプログラム的に決定するには?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】C言語の関数ポインタはどのように機能するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】stdinとSTDIN_FILENOの違いは何ですか?
-
[解決済み] struct has no member named
-
[解決済み】エラー。非スカラー型への変換を要求された
-
[解決済み] エラー:整数が期待されるところで集約値が使用された
-
[解決済み] [Solved] .Cファイルをコンパイルしています。アーキテクチャ x86_64 の未定義シンボル
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み】Linuxソケットのwrite()でBad File Descriptorが発生するC
-
[解決済み】シンプルなC言語のscanfが機能しない?重複
-
[解決済み】CプリプロセッサでMac OS X、iOS、Linux、Windowsを確実に検出する方法とは?重複
-
[解決済み】WindowsとLinuxでC++コンパイル:ifdefスイッチ【重複あり