函数的隐式声明';SetConsoleScreenBufferInfoEx';

函数的隐式声明';SetConsoleScreenBufferInfoEx';,c,windows,winapi,console,console-application,C,Windows,Winapi,Console,Console Application,我是C语言的新手,正在制作一个控制台应用程序,需要更改Windows控制台的默认16色调色板。我发现我需要使用这个函数,但是,我的编译器坚持不声明这样的函数(我只包括了windows.h) 此外,它不识别功能工作所需的控制台屏幕缓冲区信息结构,只识别控制台屏幕缓冲区信息 几天来我一直在寻找解决方案,我找到的最接近的答案是,我需要在代码中指定我针对的是Vista或更高版本的Windows。所以我试着定义 #定义NTDDI#u版本NTDDI#u VISTA和#定义#WIN32#WINNT#WINNT

我是C语言的新手,正在制作一个控制台应用程序,需要更改Windows控制台的默认16色调色板。我发现我需要使用这个函数,但是,我的编译器坚持不声明这样的函数(我只包括了
windows.h

此外,它不识别功能工作所需的
控制台屏幕缓冲区信息
结构,只识别
控制台屏幕缓冲区信息

几天来我一直在寻找解决方案,我找到的最接近的答案是,我需要在代码中指定我针对的是Vista或更高版本的Windows。所以我试着定义
#定义NTDDI#u版本NTDDI#u VISTA
#定义#WIN32#WINNT#WINNT#u VISTA
,但这也不起作用

请记住,我是C新手,所以请尽量简单地回答和解释(我使用的是Code::Blocks和Windows10)

编辑:我进行了大量搜索,以下是我的发现,有助于为可能有相同问题的人节省时间(下面的许多信息可能是错误的,因此请注意,如果确实是这样,请随时更正):

  • SetConsoleScreenBufferInfoEx
    是一个函数,它只包含在来自的
    ConsoleApi2.h
    标题(由
    windows.h
    使用)中,因此需要SDK才能工作

  • MinGW编译器。它使用自己的
    windows.h
    实现,仅部分支持SDK功能

  • ,以访问SDK功能。(然而,我无法让它工作,所以我只安装了VisualStudioIntead)


有关如何正确包含windows.h,请参阅此问题的答案。答案可能有点过时,因此您必须查找正确的菜单。有关如何正确包含windows.h,请参阅此问题的答案。答案可能有点过时,因此您必须查找正确的菜单。