gpt4 book ai didi

c - C编程中包含ncurses.h是否也包含stdio.h?

转载 作者:行者123 更新时间:2023-12-04 16:27:33 24 4
gpt4 key购买 nike

我正在研究 ncurses.h,因为我正在尝试学习 c 的一些设计方面,并且偶然发现了一个声明说 stdio.h 在 ncurses 中

  #include <ncurses.h>        /*ncurses.h includes stdio.h*/

这是真的吗?如果是这样,有人可以向我解释原因吗,如果这意味着我不必再包含它了?

此外,这是否会引起任何问题,因为我没有在常规意义上准确定义它

最佳答案

是的,包括<ncurses.h>几乎肯定会包括 <stdio.h> .但我建议不要利用这一点。

ncurses 的文档确实说:

NOTES
The header file <curses.h> automatically includes the header files <stdio.h> and <unctrl.h>.

( ncurses.h 是(通常?)到 curses.h 的符号链接(symbolic link)。)

Thomas Dickey,ncurses 的主要维护者, tellsus这去回到 1994 年,所以你极不可能遇到 ncurses不执行此操作的实现。

X/Open Curses 标准,ncurses支持,说(强调):

The inclusion of <curses.h> may make visible all symbols from the headers <stdio.h>, <term.h>, <termios.h>, and <wchar.h>.

此外,<ncurses.h> 中定义的一些函数和/或 <curses.h>采用 FILE 类型的参数,定义在 <stdio.h> . (可以想象有些东西可以使用 FILE键入不包括 <stdio.h> , 但那是人为的愚蠢,这种可能性不值得担心。)

所以 #include <ncurses.h> 实际上保证包括 <stdio.h> .

说了这么多,我建议不要利用这个保证。如果你的 C 源文件依赖于声明的东西 <stdio.h> ,作为一种风格,你应该有一个明确的 #include <stdio.h> ,即使它是完全多余的。更一般地说,C 源文件应该有一个 #include指示对于它所依赖的任何 header 。这是一个风格和问题可维护性,不是绝对要求。参见,例如, this question . C标准保证包括<stdio.h>不止一次不会造成问题。

关于c - C编程中包含ncurses.h是否也包含stdio.h?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60291027/

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