Cプログラムのコンパイル時に前処理ステップでエラーが発生します。Cコードの前処理時に無条件ディレクティブエラーが発生する
奇妙なことは、私が使用してエラーや警告なしで前処理を実行することができるということです。
gcc -I/usr/local/libpng-1.6.24/include -Wall -std=c99 lines.c -E -o lines
が、以下のフォームを使用しては私にエラーを与える:
cpp -I/usr/local/libpng-1.6.24/include -std=c99 lines.c -o lines
私はcppがgccの一部として実行されていると仮定すると、より多くのwierdになります。詳細について
私は同じ種類のそれらの多くを持って、-onlyそれらのいずれかを取得していますエラー以下を参照してください。
In file included from lines.c:1:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/stdio.h:65:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/Availability.h:172:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/AvailabilityInternal.h:15284:10: error:
unterminated conditional directive
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_11
言うまでもなくをエラーを持つファイルは、Appleの標準的なファイルであることに注意すること。 #if指示文にマッチする#endifをすべて終了させても構わないと言わなければなりません。
何が起こっているのでしょうか?または、エラーを追跡するために前方に方法ですか?
PS私はこれをOSXで実行しています。これは、Appleが標準で提供する開発ツールを使用しています。
- いくつかのコメントへの応答などの追加情報を追加
:
はlines.c https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-s096-introduction-to-c-and-c-january-iap-2013/final-project/starter-kit/lines.cのソースコードとソースコードが使用されている場所のより多くのコンテキストを持っているあなたはここを参照したい場合がありますhttps://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-s096-introduction-to-c-and-c-january-iap-2013/final-project/starter-kit/
オプション-Eを指定せずにgccを実行すると、実際にはフォルダ構造が原因でリンクの問題が発生しますが、以下のコマンドはエラーなしで動作しますが、私はこの情報が質問に関連しているとは思わない好きなものと同じものを比較するえー前処理およびCPPは前処理のみん:
gcc -I/usr/local/libpng-1.6.24/include -L/usr/local/libpng-1.6.24/lib -Wall -std=c99 lines.c -lpng -o lines
-
私は7.3から8.2.1とCommand_Line_Tools_macOS_10.12_for_Xcode_8へCommand_Line_Tools_OS_X_10.11_for_Xcode_7.3からのコマンドラインツールへの私のXcodeをアップグレードした。 2とgccは動作し続け、cppは引き続きエラーを引き起こします。この時、エラーは少し変わります。コメントで述べたように、それは20日に停止したように、私は(少なくとも)20個のエラーを取得し、XCodeを8で私のMacOSシエラ10.12.3マシン上で問題を再現することができ、
In file included from lines.c:1:
In file included from /usr/include/stdio.h:65:
In file included from /usr/include/Availability.h:184:
/usr/include/AvailabilityInternal.h:20265:10: error: #else without #if
#else
/usr/include/AvailabilityInternal.h:20832:10: error: unterminated conditional directive
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_11_4
-Eは、コンパイルステップを続行しないためエラーが隠れているため、関係はありません。 '-W'でコンパイルして' -E'でコンパイルしないとどうなりますか? –
そして、 'lines.c'を投稿するか、少なくとも' #include 'をすべて表示する最初のセクションを投稿する必要があります。 –
SDKのmacOS Sierra(10.12)バージョンを使用していないようです。後のバージョンは15284行に近い '#if'行を持っていません(21302行のうち)。私は現在のバージョンがインストールされているだけなので、簡単に探すことはできません。しかし、20k行では、ファイルは読みにくい(読みにくい)。ファイルには、#if、#ifdef、#else、#elif、または#endifの行が2500行以上あるようです。私はそのような行を分析するツールがあなたに役立つかどうかはわかりません。 (私のプロフィールを見るなら私に連絡してください) –