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 或其他

于 2012-06-10T11:25:13.700 回答