Cygwinでのコンパイル:'EOF'はこのスコープで宣言されておらず、CentOSで正常にコンパイルされています
質問
私はCygwinでLinuxバインドされたアプリケーションをコンパイルする際に問題が発生しています。
このエラー:
error: ‘EOF’ was not declared in this scope
次のコードスニペットによって生成されます
if (option == EOF) break;
これをCentOSで直接コンパイルすると、エラーは発生しません。
これらはmakeファイルによって渡されるg++パラメータです:
-g -O0 -Wall -Wextra -std=gnu++11
CentOS上のGCCバージョン:
4.8.1 20130715
CygwinでのGCCバージョン
4.8.2
私はCygwinにいくつかのライブラリが欠けているのか、これがCygwinの制限で解決できないのか疑問に思っています。
解決
EOF
で定義されています stdio.h
/ cstdio
.おそらく起こっていることは、あなたがそれらのヘッダーの1つを含めていないということですが、 は たとえば、以下を含みます。, iostream
.標準ライブラリヘッダーは、他のヘッダーも含めることが許可されており、一部の実装では' iostream
ヘッダーはこれを正確に行いますが、すべてではありません。あなたはそれに頼るべきではありません。あなたが使用する場合 EOF
, 、独自のコードに適切なヘッダーの明示的なincludeを追加します。(たとえそれがあなたのコードでなくても、この場合はそうではありませんが、ソースコードで必要な変更は同じです。)
所属していません StackOverflow