C中的代码中包含哪些内容?
请, 你能告诉我下面的代码是做什么的吗C中的代码中包含哪些内容?,c,include,C,Include,请, 你能告诉我下面的代码是做什么的吗 ...code... #include file.h ...code... 我习惯于在每个文件的开头加上一个附件。我以前从未见过这种情况,在internet上也找不到任何东西。\include是一个预处理器指令,它将给定的文件作为参数,并将其内容转储到当前文件中。通常,它用于包含头文件中的commons函数定义,但没有必要以这种方式使用它。它的用法不限于文件的开头,但请注意,即使在同一个文件中,在include语句之前,此标题中声明的宏或函数也不可用。正
...code...
#include file.h
...code...
我习惯于在每个文件的开头加上一个附件。我以前从未见过这种情况,在internet上也找不到任何东西。
\include
是一个预处理器指令,它将给定的文件作为参数,并将其内容转储到当前文件中。通常,它用于包含头文件中的commons函数定义,但没有必要以这种方式使用它。它的用法不限于文件的开头,但请注意,即使在同一个文件中,在include语句之前,此标题中声明的宏或函数也不可用。正如大家所说的那样#include可以在任何地方使用(只要它在自己的逻辑行上)。在某些情况下,您希望多次包含同一文件。首先阅读wikipage和wikipage
我有一个具体的例子(关于…)
我有一个(生成的)文件,其中包含如下行
MOM\u预定义\u命名(
name,
id,
hash)
MOM_PREDEFINED_NAMED(GET,_9dsak0qcy0v_1c5z9th7x3i,1573018885)
MOM_PREDEFINED_NAMED(HEAD,_47fatww79x6_vh8ap22c0ch,3922245622)
MOM_PREDEFINED_NAMED(web_handler,_7sav6zery1v_24sa6jwwu6c,2339220870)
#undef MOM_PREDEFINED_NAMED
我的文件(真正的头文件)定义了外部指针和枚举,因此:
// declare the predefined
#define MOM_PREDEFINED_NAMED(Name,Id,H) extern momitem_t* mom_named__##Name;
#include "predef-monimelt.h"
/// declare the hash of the predefined as an enum
#define MOM_PREDEFINED_NAMED(Name,Id,H) mom_hashname__##Name = H,
enum {
#include "predef-monimelt.h"
};
我的文件包含一个例程:
// if this routine is compiled, we are sure that all predefined hashes
// are unique
const momitem_t *
mom_predefined_item_of_hashcode (momhash_t h) {
switch (h) {
#define MOM_PREDEFINED_NAMED(Nam,Id,Hash) case Hash: return mom_named__##Nam;
#include "predef-monimelt.h"
default:
return NULL;
}
}
但是my包含两次predef monimelt.h
文件(以在初始化时创建预定义项并定义其变量):
FWIW,熔体监视器是GPLv3+许可软件请在“包括”上下显示几行!可能是在我不知道的函数声明之前(代码所做的是:它包含一个文件!因为你知道,你可以…),预处理器允许指令位于源文件中的任何位置(只要它们在自己的行上,第一列中有
#
),它不必位于特定的位置。因此,#include
指令的作用与您习惯的一样,它将另一个文件的内容包含到当前文件中。它的作用与文件顶部的#include相同。它只是在另一个地方做。本质上,它打开包含的文件,并将该文件的内容复制到#include语句所占用的空间中。我认为它可能位于函数声明之上,然后您需要这个库,或者下面的代码是什么标准,ANSI或Turbo标准??
void mom_create_predefined_items (void) {
int nbnamed = 0;
#define MOM_PREDEFINED_NAMED(Nam,Id,H) do { \
mom_named__##Nam = mom_make_item_of_identcstr(#Id); \
mom_named__##Nam->i_space = momspa_predefined; \
mom_register_item_named_cstr (mom_named__##Nam, #Nam); \
nbnamed ++; \
} while(0);
#include "predef-monimelt.h"
} // end of mom_create_predefined_items
// declare the predefined
#define MOM_PREDEFINED_NAMED(Nam,Id,H) momitem_t* mom_named__##Nam;
#include "predef-monimelt.h"