C99 プログラムで使用するために作成されたヘッダー ファイルがあります。このヘッダーにはすべての関数定義が含まれており、ソース ファイルとは対になっていません。私はそれをC++ファイルに含めています。
私の C++ コンパイラ フラグには が含ま-pedantic -std=c++11
れており、「ISO C++ は複合リテラルを禁止しています」や「ISO C++ は可変長配列を禁止しています」などのさまざまな警告をヘッダー ファイルに表示します。明らかに、C++ コンパイラは C99 コードを C++ として扱っています。2 つの質問:
- これは、異なるコンパイラを使用してさまざまなプラットフォームで正しく実行されるコードを作成しようとするときに潜在的な問題になりますか?
- 警告を解決し、標準準拠のコードを生成する良い方法は何ですか? gcc を使用してプリコンパイル済みヘッダー ファイルを作成することを考えていましたが、C++ ソースに C プリコンパイル済みヘッダーをインクルードすることによって意図しない結果が生じないことを保証するプロセスについて十分に知りません。
ありがとう