#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。
答案 0 :(得分:7)
根据平台的不同,stdout可能是一个宏,所以最好不要使用该名称。取代
HANDLE stdout = ...
与
HANDLE out = ...
然后
WriteConsole(out, ...
stdout在stdio.h中定义,这就是为什么它只在包含这个文件时才会失败。但为了安全起见,永远不要将该名称用于任何自定义变量。
答案 1 :(得分:1)
stdout已由系统定义..尝试将其更改为_stdout或其他