Windows C++控制台字体修改报错:CONSOLE_FONT_INFOEX未声明
解决C++控制台程序中'CONSOLE_FONT_INFOEX'未声明的问题
出现这个错误的核心原因是CONSOLE_FONT_INFOEX和SetCurrentConsoleFontEx是Windows Vista及更高版本才引入的API,默认情况下Windows SDK可能未启用对应版本的API声明。解决方法如下:
- 在代码最开头添加版本宏定义,指定启用Vista及以上的API支持,比如
#define _WIN32_WINNT 0x0600,也可以用更高版本值(如0x0A00对应Windows 10)
修改后的完整代码:
#define _WIN32_WINNT 0x0600 #include <windows.h> #include <iostream> using namespace std; int main() { CONSOLE_FONT_INFOEX font; font.cbSize = sizeof(font); font.nFont = 0; font.dwFontSize.X = 8; font.dwFontSize.Y = 8; SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &font); cout << "Hello world"; return 0; }
补充说明:
- 若使用Visual Studio编译,也可通过项目配置添加宏:右键项目→属性→C/C++→预处理器→预处理器定义,添加
_WIN32_WINNT=0x0600 - 需确保使用的Windows SDK版本包含该API定义,较新版本的SDK均支持
内容的提问来源于stack exchange,提问作者Ben Leib
相关产品推荐
相关产品推荐

