私の問題は次のとおりです。私はmipsのプロジェクトを構築しようとしています。 そして、私はそれがだリポジトリからダウンロードしたときに、それを構築する問題はありませんが、私はそれを構築する際には、大規模プロジェクトの一部であるとき、私はfolowingエラー受信:定義済みのマクロを強制的に使用するgccフラグ
error: expected ‘,’ or ‘...’ before numeric constant
私はそれことが判明しいくつかの変数はmipsと呼ばれ、gccコンパイラでは同じ変数があらかじめ定義されたマクロとして定義されているため、問題です。
#define mips 1
は、私がそれを検証:
このマクロの使用を強制
mipsel-linux-gnu-g++ -dM -E - < /dev/null
だから、私の質問は、すべてのボディは、特定のコンパイラフラグまたは何がある知っていますか、?リポジトリから同じコードをダウンロードするときにビルドの問題がないのは不思議です。
両方のプロジェクトが同じツールチェーンでビルドされているため、私はすでにそれを確認しました。
ありがとうございました!それでも__mips__
なくmips
を取得--ansi
と、言うことです
mipsを強制的に定義しないと、コードがmips用にコンパイルされていると常に信じているときに意図しない副作用が発生する可能性がありますか?とにかく '-dM -E'は自分のシステム上で' unix'と 'linux'マクロをリストアップしていますが、プログラムをコンパイルするときに定義されていません。マクロを定義するヘッダファイルがないこと、コンパイラの引数として定義されていないことを確認することをお勧めします。 – user2079303
私は何も強制していない、私はちょうどこれが起こっている理由を知りたい。 mips toolchainをチェックすると、#define mips 1が存在します。いくつかのフラグや何かのために、私はmipsと呼ばれるコードで私の構造に問題があります。コンパイラは私が投稿したエラーを報告します。私はちょうどそこにこれを定義するか抑制する旗があるか知りたいと思う。 – Shakal187
ああ、コンパイルをデバッグするためだけに使っているのであれば、それは問題ではありません。 MSaltersは答えを知っているようです。私は '-ansi'や非公式の' -std'なしでコンパイルしたことはありません。これは私のテスト結果やおそらくあなたのものを説明しています。 – user2079303