C ++预处理指令

时间:2014-03-14 16:42:06

标签: c++ preprocessor-directive

我们说我有以下代码

int i;
int j;
string s;
string t;

是否有任何预处理器可以将其转换为类似的东西?

int i;
int j;
string s;
string t;
void print() {
    cout << i;
    cout << j;
    cout << s;
    cout << t;
}

看起来像这样的东西会很棒。

#section print
int i;
int j;
string s;
string t;
#endsection

使用上面的代码,我将不得不编写另一个处理它的预处理器,但我不知道如何。

2 个答案:

答案 0 :(得分:3)

预处理程序指令在预处理程序中定义,您无法添加新处理程序。

但是您可以轻松编写一些可以进行此类更改的脚本。 (Per / Python / Ruby,无论如何)

在每次编译之前,只需要减去手动运行该脚本。

答案 1 :(得分:3)

这不是我所说的&#34;伟大的风格&#34;但是我在紧缩中使用的技术,特别是在受限制的系统中,称为XMacro

基本上,制作一个扩展名为.xmacro的文件(我将使用MyXMacro.xmacro),然后填写如下数据:

XMACRO_INT(i)
XMACRO_INT(j)
XMACRO_STRING(s)
XMACRO_STRING(t)
#undef XMACRO_INT
#undef XMACRO_STRING

然后在你的代码中你写下这样的东西:

#define XMACRO_INT(x) int x ;
#define XMACRO_STRING(x) std::string x ;
#include "MyXMacro.xmacro"

void print() {
# define XMACRO_INT(x) std::cout << x ;
# define XMACRO_STRING(x) std::cout << x ;
# include "MyXMacro.xmacro"
}

但在某个时刻,编写脚本并将其合并到您的构建中是一个更好的选择。