0

私は次のコードを持っています

#include <iostream>

using namespace std;

void WaitForEnter()
{
    while(1)
    {
        if('\n' == getchar()) 
        {
            break;
        }
    }
    return;
}

int main()
{
    cout<< "Press Enter to Exit... ";
    WaitForEnter();
}

これはMicrosoftVisualC ++ 2010 Expressでコンパイルされ、私が期待したことを実行します。code::blocksとgcc++4.7を使用するUbuntuでは、ビルドは次のように失敗しますerror: 'getchar' was not declared in this scope. 。行を追加する#include "stdio.h"と、プログラムはコンパイルされ、期待される動作で実行されます。このプログラムがMVC++2010 Expressを使用してコンパイルされるのはなぜですか?stdio.hただし、Ubuntuでgcc++4.7を使用するcode::blocksは使用されません。

4

3 に答える 3

4

MSVC では、<stdio.h>を含めることの副作用として含まれてい<iostream>ます。前処理された出力を確認するか、MSVC ファイルの #include パスに従ってください。

于 2012-05-21T02:13:29.753 に答える
2

最も簡単な答えは、標準では、標準ヘッダーに他のヘッダーを含めることが許可されているということです。一方、移植可能なコードを書きたい場合は、これに依存するべきではなく、翻訳単位に必要なすべてのヘッダーを含める必要があります。

于 2012-05-21T02:21:46.537 に答える
0

Visual Studio では、新しいプロジェクトを作成すると、stdafx.h が含まれます。このファイルには、以下が含まれます。

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>
于 2012-05-21T02:09:45.997 に答える