【问题标题】:In C++, is it possible to use a string literal as a macro name?在 C++ 中,是否可以使用字符串文字作为宏名称?
【发布时间】:2011-05-25 14:19:18
【问题描述】:

这是我的场景:我有一组我不想修改的源文件,但我想用其他值替换一些字符串文字。这是一个例子:

#define "oldString" "newString"

【问题讨论】:

  • 如果有效,结果在各个方面都与您直接修改源代码所获得的结果相同。将源代码放入版本控制中,这样您就可以跟踪所做的更改。或者编写一个脚本,在每次编译之前对源进行按摩。由于您正在编译源代码(而不是仅在调试时查看它以供参考),因此按照您描述的方式修改它应该没有危险。

标签: c++ string token c-preprocessor


【解决方案1】:

不,这是不可能的。如果您已经使用宏来代替字符串,那么将宏定义更改为使用不同的字符串会很简单——迟到总比没有好,您可能现在就想这样做。

【讨论】:

  • 太好了,感谢您的快速回复。在这种情况下,源文件是由另一家公司生产的,并且更改相当频繁,所以我希望只是将它们的文件放入(并进行快速比较以确保没有任何重要的更改)并包含此文件。我的备用计划是编写一个脚本来进行字符串替换,正如 Rob K. 上面建议的那样。
【解决方案2】:

不,#define 允许您为标识符赋值。标识符不能包含引号字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 2011-07-13
    相关资源
    最近更新 更多