在每个文件中使用相同的 #define

use*_*429 3 c preprocessor

我想制作一个脚本,在每个 .C 和 .H 文件中添加一个文件 ID 号。这用于标识从哪个文件生成错误消息。

所以每个文件都有一个唯一的编号,例如:

fileID        (magic)
Run Code Online (Sandbox Code Playgroud)

问题是这只需要在该文件中退出。因为每个文件都有它自己的。

编辑:我需要一个数字而不是一个字符串。所以__FILE__不起作用。

Mih*_*hir 6

我通常将这个宏用于我的错误消息:

#define P_ERR(format, ...) \
    fprintf(stderr, "%s:%d:%s: " format "\n", __FILE__, __LINE__, strerror(errno), ##__VA_ARGS__)
Run Code Online (Sandbox Code Playgroud)

您可以在文档中阅读所有此类宏。

具体用于__FILE__

__FILE__ 此宏以 C 字符串常量的形式扩展为当前输入文件的名称。这是预处理器打开文件的路径,而不是在“#include”中指定的短名称或作为输入文件名参数。例如,“/usr/local/include/myheader.h”是这个宏的一个可能的扩展。

  • C17 标准草案(也可在 C89 中找到)§7.21.3 p7 表示 *"... 最初打开时,标准错误流未完全缓冲;..."*。这意味着它要么是“无缓冲”,要么是“行缓冲”。由于您的格式字符串以“\n”结尾,因此不需要显式刷新。 (4认同)