#line伪指令
#line 4 "junk.c"
void main()
{
printf("in line %ds",_ _LINE_ _,_ _FIL_ _);
#line 12"temp.c"
printf("\n");
printf("in line %ds",_ _LINE_ _,_ _FIL_ _);
#line 8
printf("\n");
printf("in line %ds",_ _LINE_ _,_ _FIL_ _);
}
我的问题是:
1、这个程序在VC6.0下没有运行成功
报错为:
--------------------Configuration: temp - Win32 Debug--------------------
Compiling...
123.cpp
junk.c(6) : error C2065: '_' : undeclared identifier
junk.c(6) : error C2146: syntax error : missing ')' before identifier '_LINE_'
junk.c(6) : error C2059: syntax error : ')'
temp.c(13) : error C2146: syntax error : missing ')' before identifier '_LINE_'
temp.c(13) : error C2059: syntax error : ')'
temp.c(9) : error C2146: syntax error : missing ')' before identifier '_LINE_'
temp.c(9) : error C2059: syntax error : ')'
执行 cl.exe 时出错.
2、能否解释一下这个程序的作用?
书上的解释是:编译有错或者在交叉引用时,希望使用原来的文件名和原来的行号,则应事先在源文件中使用#line伪指令加以登记。
相关推荐
C#预处理指令之#line,#pragma warning 详细解析
#line 指令可能由生成过程中的自动中间步骤使用。例如,如果行从原始的源代码文件中移除,但是您仍希望编译器基于文件中的原始行号生成输出,则可以移除行,然后用 #line 模拟原始行号
C++预处理程序指令
预处理程序指令 预处理程序伪指令是程序代码中包含的行,其前面带有井号(#)。这些行不是程序语句,而是预处理程序的指令。预处理程序会在代码的实际编译开始之前检查代码,并在正则语句实际生成任何代码之前解析所有这些指令。 这些预处理器指令仅跨一行代码扩展。一旦找到换行符,预处理器指令即结束。;预处理程序指令的末尾不应包含分号()。预处理程序指令可以扩展多行的唯一方法是在行尾的换行符之前加反斜杠(\)。 宏定义(#define,#undef) 要定义预处理器宏,我们可以使用#define。它的语法是: 当预处理器遇
C语言预定义宏解析[项目源码]
本文详细介绍了C语言中的预定义宏,包括__func__、__FUNCTION__、__LINE__、__FILE__、__DATE__、__TIME__等,这些宏在编译时由编译器自动定义,不能被取消或重新定义。文章通过示例代码展示了这些宏的具体用法和输出结果,如__LINE__表示当前行号,__FILE__表示当前文件名,__DATE__和__TIME__分别表示编译日期和时间。此外,还提到了#line指令可以重新设定__LINE__的值,并探讨了其在函数外使用时的一些疑问。这些预定义宏在调试和日志记录中非常有用,能够帮助开发者快速定位代码位置和编译信息。
C语言程序设计:第6章 编译预处理.pdf
C语言程序设计:第6章 编译预处理.pdf
常用C/C++预处理指令详解
预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。预处理命令以符号“#”开头。 常用的预处理指令包括: 宏定义:#define 文件包含:#include 条件编译:#if、#elif、#ifndef、#ifdef、#endif、#undef 错误信息指令:#error #line指令 布局控制:#pragma 宏定义 宏定义又称为宏代换、宏替换,简称“宏”。宏替换只作替换,不做计算,不做表达式求解。宏定义分带参数的宏定义和不带参数的宏定义。在带参数的宏定义,宏名和参数的括号间不能有空格。 宏定义不分配内存,变量定义分配内存。 宏展开不占运行时间,


