个人预处理器指令

And*_*NER 1 c macros c-preprocessor

作为C新手,我想听听Macro"定义"的开发人员正在使用什么.我一直在考虑将这些放在标题中以跳过我已经习惯的冗长:

#define TS_ typedef struct {  
#define _TS(x) } x;

#define I(x)_ { int i; for ( i = 1; i <= x; i++ ) {  
#define _I } }
Run Code Online (Sandbox Code Playgroud)

我可以在这些宏中添加\n\t等吗?因为我想传递我的源代码减去额外的包括:

#define TS_ typedef struct {\n
#define _TS(x) } x;\n

#define I(x)_ { int i;\n\tfor ( i = 1; i <= x; i++ ) {\n 
#define _I \t}\n}\n
Run Code Online (Sandbox Code Playgroud)

这些会有用吗?

即:我可以使用预处理器将我的源代码替换为我的个人包含格式化源代码而不包含吗?

链接到良好的预处理器提示和技巧也赞赏.

小智 16

在开始之前,不要使用以下划线开头的宏名称 - 这些是为编译器和标准库编写者保留的,不得在您自己的代码中使用.

另外,我会说你建议的宏都是非常糟糕的想法,因为它们会向读者隐瞒正在发生的事情.他们唯一的理由似乎是为您节省很少的打字.通常,只有在没有明智选择的情况下才应该使用宏.在这种情况下有一个 - 只需编写代码.


jco*_*der 6

可以通过转义换行符放入空格

#define SOMETHING whatever\
This is part of the macro
Run Code Online (Sandbox Code Playgroud)

但正如其他人所说,这并不是一个很好的方法.

查看编辑器宏会更好,因此您可以键入快捷方式并让编辑器展开它.