は持っている、それは無意味です:extern "C"を定義しているファイルで使用しますか?
#ifdef __cplusplus
extern "C" {
#endif
// code...
#ifdef __cplusplus
}
#endif
「コード...」(なしは、などが含まれる)を定義し、型定義のちょうど束でありますか?
は持っている、それは無意味です:extern "C"を定義しているファイルで使用しますか?
#ifdef __cplusplus
extern "C" {
#endif
// code...
#ifdef __cplusplus
}
#endif
「コード...」(なしは、などが含まれる)を定義し、型定義のちょうど束でありますか?
ヘッダーの使用方法によって異なります。
タイプと値が有効で、CとC++の両方で同じ意味を持ち、Cでコンパイルされたコンパイル単位やC++でコンパイルされたコンパイル単位で使用する場合は、extern "C"
を使用する必要があります。 C++。それ以外の場合、C++コードとCコードは相互運用できません。
コンパイル単位でヘッダファイルがインクルードされている場合は、C++のようにC言語でビルドされることはありますが、どちらにもなることはありません。extern "C"
は必要ありません。また、選択した言語に固有の機能を使用することもできます。
ありがとう、ありがとうございます。私はextern "C"を除外することに決めました。これは単にtypedefがunsigned charであり、その定義がちょうど16進の整数値であるためです。 – slothh
あなたのニーズに応じて、 '#define'ではなく' const'sを使うことをお勧めします。合理的な品質のコンパイラを前提とした 'const'の利点は、マクロを使う利点を上回る傾向があります。詳細については、https://stackoverflow.com/questions/6442328/what-is-the-difference-between-define-and-constとリンクされた重複を参照してください。 – Peter
原則として、特定のケース(変数または関数の宣言なし)では、extern "C"
は無意味です。
実際には、コードを読みやすく(C++フレンドリなインターフェイスを定義する意図を示している)、脆弱ではありません。いくつかの開発者(おそらくあなた)は、数ヶ月以内に他の宣言をその中に追加するかもしれません。
CとC++が引き続き有効ですが、言語間の移植性のために低コストで便利です。 – chux