我正在研究ncurses.h,因为我试图学习c的一些设计方面,偶然发现一条声明stdio.h在ncurses内的声明
#include <ncurses.h> /*ncurses.h includes stdio.h*/
这是真的吗?如果是这样,有人可以向我解释原因,如果这意味着我不必再包含它了?
此外,这是否会引起任何问题,因为我没有从常规意义上准确定义它
[ true(例如,对于我系统上的ncurses.h
版本,它是true)。但是除非有记录,否则依赖它是不明智的。即使是,我也不会。
如果使用的是<stdio.h>
中声明的内容,则应在自己的源文件中包含#include <stdio.h>
。它可能是多余的,但无害。保证多次包含<stdio.h>
不会产生任何其他影响。
#pragma once
或#ifndef _HEADER_NAME ... #endif
),多次包含同一文件无害;stdio.h
,是的,这确实意味着您无需再次包含stdio.h
。这是可行的,因为编译器会在代码中放置#include
指令的位置插入#include
头文件的内容。这意味着ncurses.h
不仅包含在您指定位置的代码中,而且stdio.h
在放置到您的代码中之前已经包含在该文件中的适当位置。stdio.h
的后续包含将由于使用include guards而对您的程序没有影响。
如果您在自己的代码中使用stdio.h
中的任何内容,我认为将#include <stdio.h>
指令添加到您自己的源文件中是一种好习惯。我的理由是,它直接与下一个阅读您的代码的开发人员进行通信,该代码无需使用隐式信息即可在此处使用stdio
功能。