C 用于定义宏(如果未定义)的压缩版本
我目前正在编写一组模块,其中的参数可以在编译时定义。对于每个值,我还指定了一个默认值,这样用户只需要定义他们想要更改的值。有一个用户定义的include文件,其中包含带有覆盖值的#define宏 在我的模块中,我使用C 用于定义宏(如果未定义)的压缩版本,c,macros,c-preprocessor,C,Macros,C Preprocessor,我目前正在编写一组模块,其中的参数可以在编译时定义。对于每个值,我还指定了一个默认值,这样用户只需要定义他们想要更改的值。有一个用户定义的include文件,其中包含带有覆盖值的#define宏 在我的模块中,我使用 #include "user-defines.h" #include "module.h" 其中module.h包含默认定义 目前,我使用以下模式来定义module.h中的默认值 #ifndef somemacro #define some
#include "user-defines.h"
#include "module.h"
其中module.h包含默认定义
目前,我使用以下模式来定义module.h中的默认值
#ifndef somemacro
#define somemacro "default value"
#endif
这是可行的,但意味着需要大量的额外输入。它也是三行而不是一行,放大了源代码
我的问题是,是否有一种更优雅的方法(例如,1行,不重复宏名称)仅在未定义的情况下定义默认值?我用一个宏
default(x,y)
进行了实验,该宏编写宏代码但无法使其工作。它不会比三行更紧凑。不,您不能使用宏来编写新宏。您可以编写脚本,从更简单的文件创建头文件。或者,您可以在编辑器中使用“查找/替换”来执行此操作。第二,重新定义宏表明了错误的项目结构。我尝试了一个宏DEFAULT(x,y)
,它编写宏代码,但无法使其工作。它没有比三行更紧凑的结构。不,您不能使用宏来编写新宏。您可以编写脚本,从更简单的文件创建头文件。或者,您可以在编辑器中使用“查找/替换”来执行此操作。第二,重新定义宏表明了错误的项目结构