代码如下:
#include <stdio.h>
int main() {
fprintf(stderr, "%s \n", __LINE__);
return 0;
}
# gcc b.c
# ./a.out
Segmentation fault (core dumped)
最佳答案
__LINE__
展开为整数常量。使用%d
打印:
fprintf(stderr, "%d \n", __LINE__);
§6.10.8.1强制性宏(C11草案)
__LINEú当前源线(整数常量)的假定行号(在当前源文件内)。
如果
__LINE__
宏溢出int
是一个问题,则可以将其转换为uintmax_t
并打印它。这是最安全的方法,因为uintmax_t
是最大的整数类型。#include <stdint.h>
fprintf(stderr, "%ju \n", (uintmax_t)__LINE__);
关于c - 使用fprintf输出__LINE__时出现段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34264316/