#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);
}
结果:错误:将“_iob”声明为引用数组
但是当我注释掉 stdio.h
时,它编译正常。这里有什么问题吗?
编译器是 MinGW。
最佳答案
根据平台的不同,stdout 可能是一个宏,所以最好不要使用那个名称。替换
HANDLE stdout = ...
与
HANDLE out = ...
然后
WriteConsole(out, ...
stdout 是在 stdio.h 中定义的,这就是为什么它仅在包含此文件时才会失败。但为了安全起见,切勿将该名称用于任何自定义变量。
关于c++ - 调用 WriteConsole 时包含 stdio 导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10968074/