g++ -D选项添加数字1
G++ -D option adds digit 1
我知道标题很奇怪,所以这里是解释:
我有一些代码,我宁愿不修改,但我需要重新定义一些函数。最简单的例子是:
int main()
{
strcpy_s(a,b);
}
但是当我运行这个:
$ g++ -E -P -w -D"strcpy_s(D,S) strcpy(D,S) buahaha" test.cpp
我:
int main()
{
strcpy(a,b) buahaha 1;
}
这个1
是什么?忽略buahaha,这只是为了显示PP做了一些事情。
有两种方法可以使用-D
选项:
-
-Dname
-
-Dname=value
第一个定义name
为1
,第二个定义name
为value
。
name
允许包含圆括号,这样您就可以在命令行上定义类函数的宏。像-Dfoo bar
这样的东西不包含等号,所以它被解释为试图将foo bar
定义为1
。宏名不能包含空格,所以这可能会导致错误消息,但它不会被检测到,最终会混淆编译器。试试-D"strcpy_s(D,S)=strcpy(D,S) buahaha"
吧。
我怀疑发生的是-Dname
被翻译成#define name 1
, -Dname=value
被翻译成#define name value
,错误检查只发生在那之后。这将把-D"strcpy_s(D,S) strcpy(D,S) buahaha"
转换为#define strcpy_s(D,S) strcpy(D,S) buahaha 1
,并解释您得到的结果。
文档显示-D
选项在其语法中有一个等号,您没有使用它。
你的命令应该是:
$ g++ -E -P -w -D"strcpy_s(D,S)=strcpy(D,S)" test.cpp
相关文章:
- 我需要知道如何在 c++ 中使用增量值添加到一定数字
- 将随机生成的数字添加到数组 + 对这些数组求平均值
- 在不添加进位的情况下添加数字的C++程序
- 将两个数字添加为链表
- C++:添加到输出中的不需要的数字
- 如何非常快速地将数字添加到 Vector 中的一系列元素中
- 如何在 c++ 中添加两个大的双精度数字
- C++在减去 int 时向 int 添加一个额外的数字
- 字符串添加数字 C++
- C - 将数字添加到列表中?(就像python)
- 当我使用 += 将数字添加到数组中时,无论数字是什么,它总是以 0 结束
- 将数字添加到 QByteArray
- C++ 将数字添加到数组对象
- 使用 for 循环将数字添加到向量
- 将变量中的数字添加到对象的属性中
- 将[N]下的所有幸运数字添加到向量的算法
- 为什么当我将数字添加到字符串时,它在c++中显示随机文本
- 如何将数字添加到整数(如字符串)上
- 数字添加程序,最多100位数字.控制台输出奇数
- 在替换正则表达式中向匹配的数字添加一