gpt4 book ai didi

c - 仅当使用 -std=c99 时,我才会收到隐式声明错误

转载 作者:行者123 更新时间:2023-11-30 18:54:08 25 4
gpt4 key购买 nike

由于某种原因, -std=c99 使 gcc 无法看到函数 wborder_set() 的声明(位于 <curses.h> )

#include <curses.h>
#include <locale.h>

int main(int argc, char* argv[]){
initscr(); // start ncurses
cbreak(); // don't wait for lf to getch
noecho(); // don't copy entered characters
nonl(); // use /r/l
clear(); // clear the screen!

setlocale(LC_CTYPE, "");

int ySize, xSize;
getmaxyx(stdscr, ySize, xSize);
WINDOW *upperWin = newwin(ySize, xSize, 0, 0);

// magic utf encodings for window border
wborder_set( upperWin, "\u1234", "\u1234", "\u1234", "\u1234",
"\u1234", "\u1234", "\u1234", "\u1234" );
wrefresh(upperWin);
getch();
return 0;
}

使用 gcc test.c -lncursesw -o cursestest 进行编译工作正常!但是,如果我使用

进行编译

gcc test.c -std=c99 -lncursesw -o cursestest

它回复,

cursescurses.c: In function ‘main’:
cursescurses.c:18:7: warning: implicit declaration of function ‘wborder_set’ [-Wimplicit-function-declaration]
wborder_set( upperWin, "\u1234", "\u1234", "\u1234", "\u1234",

这让我相信我不能相信它正确链接了 wborder_set。

为什么会发生这种情况?

最佳答案

定义_XOPEN_SOURCE_EXTENDED会有所帮助,但Linux(像大多数系统一样)存在与标准冲突的扩展形式的陷阱以及对标准的不同解释。所以...对于 Linux,通用的创可贴是从定义 _GNU_SOURCE 开始(这会在事后启用适当的 X/Open 定义)。

如果您的 ncurses 配置包含 reasonably current ncursesw5-config 脚本它将添加该 -D 选项。

关于c - 仅当使用 -std=c99 时,我才会收到隐式声明错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30955390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com