我正在研究一个项目,并有一个问题,我相信可以用宏来解决,但考虑到问题的性质,我没有经验来自己写一个。复杂的多参数#define宏的字符串
这是我所期望的输入和的#define宏的输出:
输入如下代码
printf(foobar(Hello World.));
应该导致预处理生产代码,上面写着:
printf((char *)(std::string("")+'H'+'e'+'l'+'l'+'o'+' '+'W'+'o'+'r'+'l'+'d'+'.').c_str());
我假设这个复杂的事情是可能的,我希望你们中的一个能帮助我。
我需要它是一个宏,我不想要一个字符串常量在任何地方。
这基本上是一个“字符串常量”,除了终止零(尽管你有一个“”)。你试图达到什么目的,为什么你想避免字符串常量? – Nico
我很害怕问在什么情况下这可能是有意义的......(你的实际请求是什么,让它产生特定的输出或在预处理器运行之前没有文字?) –
仅供参考'std :: string()'是比std :: string(“”)'更好。你为什么要投“char *”?我对人们所做的所有聪明的事情感到惊讶,没有办法在宏中进行任何字符串操作。但真的,如果你不想听到这个,但是最好避免使用宏。 – tenfour