Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用于查找CPP宏对象并替换令牌的脚本_C++_Bash_Perl_C Preprocessor - Fatal编程技术网

C++ 用于查找CPP宏对象并替换令牌的脚本

C++ 用于查找CPP宏对象并替换令牌的脚本,c++,bash,perl,c-preprocessor,C++,Bash,Perl,C Preprocessor,好的,我试着用Perl做这件事,但几乎没有成功 在.cpp文件中,我有以下文本 #define VARIABLE_A 32 我想用其他数字来代替这个 #define VARIABLE_A 123 我希望能够通过我的命令行运行此命令,例如: change_variable_a 123 最简单的方法是什么?最好是BASH或Perl 我现在的代码是垃圾。我试图将参数通过bash脚本传递到perl一行程序中,这是完全错误的 好的,这是我的 perl -MPOSIX -pe's/(\d

好的,我试着用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 /define\s+VARIABLE_A\s+\d+/' file.h > file.h.2
 mv -f file.h.2 file.h

这可能会大体上回答您的问题:

但是,你可能可以做的一件事是定义

#define VARIABLE_A argument
int argument;

然后阅读命令行中的参数。

这可能会回答您的一般问题:

gcc -D VARIABLE_A=123 file.cc
#ifndef VARIABLE_A
#define VARIABLE_A 32
#endif
但是,你可能可以做的一件事是定义

#define VARIABLE_A argument
int argument;

然后从命令行读取参数。

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

gcc -D VARIABLE_A=123 file.cc
#ifndef VARIABLE_A
#define VARIABLE_A 32
#endif
如果您想要有一个默认值,那么您只需要在代码中有一些内容来定义变量_a,而该变量尚未在命令行上设置

gcc -D VARIABLE_A=123 file.cc
#ifndef VARIABLE_A
#define VARIABLE_A 32
#endif

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

gcc -D VARIABLE_A=123 file.cc
#ifndef VARIABLE_A
#define VARIABLE_A 32
#endif
如果您想要有一个默认值,那么您只需要在代码中有一些内容来定义变量_a,而该变量尚未在命令行上设置

gcc -D VARIABLE_A=123 file.cc
#ifndef VARIABLE_A
#define VARIABLE_A 32
#endif

“我太尴尬了,无法发布这段代码。”好吧,那时还没有修复程序。对不起,我们不是免费的代码编写服务。是的,你是对的,我就是这样来的,不是吗?无论如何,我希望有一些非常简单的方法来做这件事,某种类型的ReGeX MaGik,完全是C++的定义,因为我不一定是第一个想要通过命令行配置预处理器的人。我已经发布了代码。“我太尴尬了,无法发布此代码。”那么,没有可用的修复方法。对不起,我们不是免费的代码编写服务。是的,你是对的,我就是这样来的,不是吗?无论如何,我希望有一些非常简单的方法来做这件事,某种类型的ReGeX MaGik,完全是C++的定义,因为我不一定是第一个想要通过命令行配置预处理器的人。我已经发布了代码。本质上,从命令行读取不是这里需要的。不管怎样,我都会重新编译,只是需要更改配置。实际上,从命令行读取不是这里所需要的。不管怎样,我都会重新编译,只需要更改配置。这很有用,也很有帮助,不幸的是,由于构建过程不在我的控制范围内,因此我无法选择更改。您有能力更改项目的哪些方面?您能否将
#define变量_A
本身移动到头文件中,并用include替换原始define?然后,至少您只需替换一行文件即可更改变量_a;事情很复杂,我不告诉你细节。如果我重新表述这个问题,并删除cpp文件中的事实,该怎么办?正如我在一个文件中有“define bar 67”,我希望有一个脚本,允许我在运行“change_bar 72”时将其替换为“define bar 72”。值得一提的是,我注意到,提供更多细节通常会让人们找到你意想不到的解决方案。也就是说,听起来您可以访问一个文件,并且只能访问该文件,所以您只需要更改该行,而不需要更改其他行。如果是这样,C++中的事实并不重要,你真正想要的是一个目标搜索和替换脚本,你可以从命令行运行。您可能只想使用sed。是的,我非常笼统,因为大部分工作都是这样,我可能会因为在互联网上发布任何源代码提示而遇到一些麻烦。不管怎样,sed看起来会很好地工作,为此我非常感谢您。我会确保包括我最终使用的解决方案,一旦我有了它的工作。这是有用的和有帮助的,不幸的是,对于我自己在这个特定的项目上不是一个选项,因为构建过程不在我的控制范围内,无法更改。你有能力更改项目的哪些方面?您能否将
#define变量_A
本身移动到头文件中,并用include替换原始define?然后,至少您只需替换一行文件即可更改变量_a;事情很复杂,我不告诉你细节。如果我重新表述这个问题,并删除cpp文件中的事实,该怎么办?正如我在一个文件中有“define bar 67”,我希望有一个脚本,允许我在运行“change_bar 72”时将其替换为“define bar 72”。值得一提的是,我注意到,提供更多细节通常会让人们找到你意想不到的解决方案。也就是说,听起来您可以访问一个文件,并且只能访问该文件,所以您只需要更改该行,而不需要更改其他行。如果是这样,C++中的事实并不重要,你真正想要的是一个目标搜索和替换脚本,你可以从命令行运行。您可能只想使用sed。是的,我非常笼统,因为大部分工作都是这样,我可能会因为在互联网上发布任何源代码提示而遇到一些麻烦。不管怎样,sed看起来会很好地工作,为此我非常感谢您。我会确保包括解决方案,我最终使用,一旦我有它的工作。