构建期间仅在标头中显示 #pragma 消息一次

Ayb*_*gür 5 c gcc pragma c-preprocessor

我的标题中有一堆#pragma message("A message")s config.h,它们包含在项目的许多地方;目标是告知在构建过程中选择了哪些配置选项。标头受到#ifndef #define样式标头保护的保护。问题是每次包含此标头时,都会打印该消息。有没有更好的方法来做到这一点,以便在构建过程中仅打印一次消息?

编辑:我知道构建选项通常是使用 cmake、qmake、autotools 等构建工具来操作和查看的。但由于项目的性质,我实际上对构建工具没有选择。

fuz*_*fuz 3

您可以将 放在#pragma message一个单独的文件中,您只从 中包含一次config.h。即使在错误条件内,gcc 也可能会打印这些编译指示,但它不会包含来自错误条件内的文件。所以像这样:

/* config.h */
#ifndef CONFIG_H
#define CONFIG_H

#ifndef CONFIG_MESSAGE_PRINTED
#define CONFIG_MESSAGE_PRINTED
#include "config_message.h"
#endif

/* ... */
#endif /* CONFIG_H */
Run Code Online (Sandbox Code Playgroud)

config_message.h

#pragma message("A message")
Run Code Online (Sandbox Code Playgroud)