代码如下:

#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/

10-11 23:19