c语言中的#line是什么意思?

Jackers679 2009-12-23 11:37:56
//file1.c
void f1()
{
...;
#line file2.c 100
...;
#line file2.c 200
...;
}

#line file2.c 400

void f2()
{
...;
#line file2.c 600
...;
#line file2.c 700
...;
}

请问下这个里面的#line是什么意思,还用到别的文件去了,查了下是确定文件行号的,但是写别的文件的行号就不知道是什么意思了?

望高手提点下。(不要百度里面讲的那个,我看过了,还是不懂)
...全文
2652 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jackers679 2009-12-24
  • 打赏
  • 举报
回复
那如果我把那些#line都注释掉的话 应该不会影响我的程序吧
fengogo 2009-12-24
  • 打赏
  • 举报
回复
printf("current line number %d ,current file %s\n",__LINE__,__FILE__);

编译器知道自己当前编译到哪个文件的第几行, 所以当它编译到这一句时,会把 __LINE__, __FILE__ 替换为行号和文件名. 所以可以把这两个东西理解为编译器定义的宏, 无论你在哪个语句使用改宏,就会变成该语句所在行和所在文件名.
deep_pro 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jackers679 的回复:]
如果程序里面加了# line 100 "other_file" ,程序是不是就会执行other_file里面的100行代码,到底是不是这个意思?
[/Quote]

自己试一试就知道了
这种问题还要问人怎么成高手?
deep_pro 2009-12-24
  • 打赏
  • 举报
回复
只是宏罢了
# line 100 "other_file" 只会影响 __LINE__ __FILE__
对程序流程没有影响
lz快结分!
Jackers679 2009-12-24
  • 打赏
  • 举报
回复
如果程序里面加了# line 100 "other_file" ,程序是不是就会执行other_file里面的100行代码,到底是不是这个意思?
deep_pro 2009-12-24
  • 打赏
  • 举报
回复
无视它 注释掉
lz给我分
wangqingshui531 2009-12-24
  • 打赏
  • 举报
回复
楼主不喜欢动手
deep_pro 2009-12-23
  • 打赏
  • 举报
回复
lz得先学会__LINE__ __FILE__
然后就很容易理解了


#include <stdio.h>
#include <stdlib.h>

int main(void)
{
printf("current line number %d ,current file %s\n",__LINE__,__FILE__);

# line 100 "other_file"
printf("current line number %d ,current file %s\n",__LINE__,__FILE__);
return 0;
}
Wenxy1 2009-12-23
  • 打赏
  • 举报
回复
在程序中有line的地方替换为'行号 文件名'
Oo_Oo_ 2009-12-23
  • 打赏
  • 举报
回复
一些宏罢了
deep_pro 2009-12-23
  • 打赏
  • 举报
回复
只是为了方便调试而已
__LINE__ __FILE__
输出当前代码所在行、所在文件
当程序很复杂的时候,运行时错误,打印错误信息时加上行号容易定位

还有可以用 __FUNCTION__ 输出当前函数名
__DATE__ 宏指令含有形式为月/日/年的串,表示源文件被翻译到代码时的日期。
__TIME__ 宏指令包含程序编译的时间。时间用字符串表示,其形式为: 分:秒
Jackers679 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 deep_pro 的回复:]
lz得先学会__LINE__ __FILE__
然后就很容易理解了

C/C++ code
#include<stdio.h>
#include<stdlib.h>int main(void)
{
printf("current line number %d ,current file %s\n",__LINE__,__FILE__);

# line100"other_file"
printf("current line number %d ,current file %s\n",__LINE__,__FILE__);return0;
}
[/Quote]

这样做是为了什么,让程序执行other_file里面的100行代码后吗?

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧