Cygwinでのコンパイル:'EOF'はこのスコープで宣言されておらず、CentOSで正常にコンパイルされています

StackOverflow https://stackoverflow.com//questions/23038295

  •  21-12-2019
  •  | 
  •  

質問

私は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を追加します。(たとえそれがあなたのコードでなくても、この場合はそうではありませんが、ソースコードで必要な変更は同じです。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top