Cup*_*ove 2 c ncurses stdio libraries
我正在研究 ncurses.h 因为我正在尝试学习一些 c 的设计方面,并且偶然发现了一个声明,说 stdio.h 在 ncurses 内部
#include <ncurses.h> /*ncurses.h includes stdio.h*/
Run Code Online (Sandbox Code Playgroud)
这是真的?如果是这样,有人可以向我解释原因,如果这意味着我不必再次包含它?
此外,这是否会导致任何问题,因为我没有在常规意义上对其进行准确定义
是的,包括<ncurses.h>几乎肯定会包括
<stdio.h>。但我建议不要利用这一点。
的文档ncurses确实说:
注意
头文件<curses.h>自动包含头文件<stdio.h>和<unctrl.h>.
(ncurses.h(通常?)是到 的符号链接curses.h。)
托马斯·迪基的主要维护者ncurses,告诉我们,这可以追溯到1994年,所以你极不可能遇到一个ncurses
不做到这一点的实现。
支持的 X/Open Curses 标准ncurses说(强调):
包含
<curses.h>可以使标题中的所有符号可见<stdio.h>,<term.h>,<termios.h>, 和<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指令,用于它所依赖的任何头文件。这是样式和可维护性的问题,而不是绝对要求。例如,请参阅
此问题。C 标准保证包含<stdio.h>不止一次不会导致问题。
| 归档时间: |
|
| 查看次数: |
640 次 |
| 最近记录: |