3
#include <stdio.h>
#include <windows.h>

using namespace std;

int main() {
  char s[] = "Hello\n";
  HANDLE stdout = GetStdHandle(STD_OUTPUT_HANDLE);
  unsigned long cChars;
  WriteConsole(stdout, s, lstrlen(s), &cChars, NULL);
}

結果:error: declaration of '_iob' as array of references

しかし、コメントアウトするstdio.hと、コンパイルは正常に行われます。ここで何が問題になっていますか?

コンパイラはMinGWです。

4

2 に答える 2

7

プラットフォームによっては、stdout はおそらくマクロなので、その名前を使用しない方がよいでしょう。交換

HANDLE stdout = ...

HANDLE out = ...

その後

WriteConsole(out, ...

stdout は stdio.h で定義されているため、このファイルが含まれている場合にのみ失敗します。ただし、安全のために、その名前を自己定義変数に使用しないでください。

于 2012-06-10T10:58:10.073 に答える
1

stdout はすでにシステムによって定義されています.. _stdout などに変更してみてください

于 2012-06-10T11:25:13.700 に答える