7
C++プロジェクトにCで書かれたヘッダをいくつか含める必要があります。ヘッダーファイルでは、restrict
keywordが使用されており、C++の構文エラーにつながります。C++でコンパイルするときに `restrict`キーワードを取り除くマクロ
私はC++コンパイラでコンパイルしているかどうかをチェックし、この場合はrestrict
キーワードを削除するプリプロセッサマクロを探しています。
C++プロジェクトにCで書かれたヘッダをいくつか含める必要があります。ヘッダーファイルでは、restrict
keywordが使用されており、C++の構文エラーにつながります。C++でコンパイルするときに `restrict`キーワードを取り除くマクロ
私はC++コンパイラでコンパイルしているかどうかをチェックし、この場合はrestrict
キーワードを削除するプリプロセッサマクロを探しています。
#ifdef __cplusplus
#define restrict
#endif
とする必要があります。 restrict
はC++のキーワードではないため、#define
は問題ありません。
あるいは、Arne Mertzが示唆したように、より良いまだ、あなたはC++ソースでCヘッダを含め
extern "C" {
#define restrict
// include C headers here
#undef restrict
}
を持っています。
C言語でも 'restrict'を何も定義していないと(Cコンパイラが見る前にプリプロセッサがソースを変換するので)、それは意図したものではありません。 –
@AlexeyFeldgendlerだから、 '#ifdef __cplusplus' ... – SomeWittyUsername
で囲まれているのは、Cのヘッダをインクルードする前に'#define'をC++コードに入れておけば( 'extern" C {{' )、あなたは '#ifdef/#endif'を必要としません。 C++でlibを使用しようとする可能性があるので、最小限の侵襲性を試してください。つまり、Cコードを変更しないでください。代わりにC++コードを修正してください。 –