脚本查找CPP宏对象和替换令牌

Script to Find CPP Macro Object and Replace Token

本文关键字:替换 令牌 对象 查找 CPP 脚本      更新时间:2023-10-16

好吧,我试过在Perl中这样做,但几乎没有成功…

在。cpp文件中,我有以下文本…

#define VARIABLE_A    32

我希望用其他数字

来代替它
#define VARIABLE_A    123

我希望能够通过我的命令行运行它,例如:

change_variable_a 123

实现这一点最简单的方法是什么?BASH或Perl优先。

我现在的代码是垃圾。我完全错误地试图通过bash脚本将参数传递到perl一行程序中。

好的,这是我的。

 perl -MPOSIX -pe's/(d+)/@ARGV[0]/e if /defines+VARIABLE_As+d+/' file.h > file.h.2
 mv -f file.h.2 file.h

重新编译时,可以使用-D选项在命令行上设置一个值(至少在gcc和clang;可能其他人)。因此,最简单的解决方案就是在命令行中定义VARIABLE_A。

gcc -D VARIABLE_A=123 file.cc

如果你想有一个默认值,你只需要在你的代码中有一些东西来定义VARIABLE_A,当它没有在命令行上设置。

#ifndef VARIABLE_A
#define VARIABLE_A 32
#endif

这可能会回答您的问题:从命令行覆盖宏

但是,你可以做的一件事就是定义
#define VARIABLE_A argument
int argument;

然后从命令行读取参数