And*_*rei 3 macros c-preprocessor
这是C宏怪异问题.
是否可以编写一个以字符串常量X("...")作为参数的宏,并计算相同长度的y,以使Y的每个字符都是X的相应字符的[常量]算术表达式.
这是不可能的,对吧?
不,C预处理器认为字符串文字是单个标记,因此它不能执行任何此类操作.
您要求的内容应该在实际的C代码中完成.如果您担心运行时性能并希望在编译时委派此固定任务,现代优化编译器应该成功处理这样的代码 - 它们可以展开任何循环并预先计算任何固定表达式,同时使用代码大小和CPU缓存使用考虑到模式,预处理器不知道.
另一方面,您可能希望您的代码包含这样一个修改过的字符串文字,但不想要或不需要原文 - 例如,您希望有一个模糊的文本,您的程序将解码,并且您不希望有原始字符串可执行文件.在这种情况下,您可以使用一些构建系统脚本来执行此操作,例如,使用另一个C程序生成修改后的字符串,并在实际程序的C编译器命令行中将它们定义为宏.