zaley 发表于 2013-10-08 09:56

预编译请教

在 某C文件中 有如下 代码:

......
/*--- End of included file: packet-goose-hf.c ---*/
#line 50 "../../asn1/goose/packet-goose-template.c"         ----> 1

/* Initialize the subtree pointers */
static int ett_goose = -1;


/*--- Included file: packet-goose-ett.c ---*/
#line 1 "../../asn1/goose/packet-goose-ett.c"          -----> 2
static gint ett_goose_GOOSEpdu = -1;
static gint ett_goose_GSEMngtPdu = -1;
static gint ett_goose_RequestResponse = -1;
static gint ett_goose_GSEMngtRequests = -1;
static gint ett_goose_GSEMngtResponses = -1;
static gint ett_goose_GetReferenceRequestPdu = -1;
static gint ett_goose_T_getReferenceRequestPDU_offset = -1;
static gint ett_goose_GetElementRequestPdu = -1;
static gint ett_goose_T_references = -1;
static gint ett_goose_GSEMngtResponsePdu = -1;
static gint ett_goose_PositiveNegative = -1;
static gint ett_goose_T_responsePositive = -1;
static gint ett_goose_SEQUENCE_OF_RequestResults = -1;
static gint ett_goose_RequestResults = -1;
static gint ett_goose_IECGoosePdu = -1;
static gint ett_goose_SEQUENCE_OF_Data = -1;
static gint ett_goose_Data = -1;

/*--- End of included file: packet-goose-ett.c ---*/
#line 55 "../../asn1/goose/packet-goose-template.c"---------->3

/*--- Included file: packet-goose-fn.c ---*/
#line 1 "../../asn1/goose/packet-goose-fn.c"      ---------->4
/*--- Cyclic dependencies ---*/
.......

以上与编译指令 到底是何意思?
例如 标记1 处 ,是指 此处包含 packet-goose-template.c 的 第50行吗?还是 从此处开始代表 packet-goose-template.c 的第 50行,即 源文件已改为 packet-goose-template.c?

EricFisher 发表于 2013-10-08 11:52

> 以上与编译指令 到底是何意思?
> 例如 标记1 处 ,是指 此处包含 packet-goose-template.c 的 第50行吗?还是 从此处开始代表 packet-goose-template.c 的第 50行,即 源文件已改为 packet-goose-template.c?

摘自《C语言解析教程》附录B

形式为

#line intergral_constant "filename"

的预处理指令使得编译器对原文本重编号,为下一行设定一个特定的常量,并认为当前文件名是filename。

astone2007 发表于 2013-10-27 22:33

重定义当前行和重命名当前文件的.

> 例如 标记1 处......

表示,标记1处重定义为文件的第50行,该文件名重命名为packet-goose-template.c(真实的文件名和该行标号可能不是这个).
页: [1]
查看完整版本: 预编译请教