c++ - 调用 WriteConsole 时包含 stdio 导致错误

标签 c++ winapi console mingw

#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/

相关文章:

c# - 在 Linux 中从 C# Mono 应用程序中运行命令

c++ - _Unwind_ 和 unw_ 函数(LLVM 的 libunwind)

c++ - 从一种颜色插值到另一种颜色

c++ - 如何从 Gdiplus::Bitmap 快速复制数据

c++ - 在 main 之前未调用 WinMain(C/C++ 程序入口点问题)

用于控制台菜单驱动应用程序的 .Net 库

c++ - c++后缀数组的实现

c++ - 如何使用通配符指定每个源文件对其对应的头文件的依赖?

windows - 通过 Win32 API 从服务创建 Windows session

java - 在java中等待输入时打印到控制台?