ヘッダーファイルがインクルードされているかどうかに依存するコードを書いています。ファイルが含まれている場合、特定の追加機能が必要です。おそらく#ifを使用してこれを行う方法はありますか?Cbtwを使用する
2 に答える
4
そのヘッダーの単なる#define
シンボルであり、#ifdef
後で使用します。
header.h
#define HAVE_IPV6
some_file.c
#ifdef HAVE_IPV6
/* code */
#endif
于 2012-05-31T17:24:45.560 に答える
0
C ヘッダーで一般的に使用される手法は、インクルード ガードと呼ばれます。主な目的は、ヘッダー ファイルの複数のインクルードを防ぐことですが、必要に応じて使用することもできます。
インクルード ガードには、特定のヘッダー ファイルに固有の、プロジェクトの各ヘッダー内のプリプロセッサ定数のテストと条件付き設定が含まれます。これを実現するために、各ヘッダーは#ifndef/#endif
ブロック内にラップされます。
例:
MyHeader1.h
#ifndef MY_HEADER_1_H
#define MY_HEADER_1_H
// header file contents...
#endif // MY_HEADER_1_H
MyHeader2.h
#ifndef MY_HEADER_2_H
#define MY_HEADER_2_H
// header file contents...
#endif // MY_HEADER_2_H
あなたの場合、コードの他の場所で、特定のヘッダー ファイルを含めるかどうかをテストできるようになりました。#ifdef MY_HEADER_1_H
于 2012-05-31T19:54:18.587 に答える