【发布时间】:2019-08-12 11:08:56
【问题描述】:
是否可以仅使用预处理器宏在字符串中填充空格(或任何字符)?如果有,怎么做?
例子:
#define SOME_STR "v1.1"
#define STR_PAD(str, len) // <-- padding defined string
#define SOME_STR_PADDED STR_PAD(SOME_STR, 10) // evaluates to "v1.1 "
我知道在运行时有简单的解决方案,但我的问题是如何在编译时填充字符串。
【问题讨论】:
-
可能会改写您的问题,以便您提出真正的问题?引用您的话:
...my question is if it is possible to pad...我的回答是 - 是的,这是可能的。 -
我问是否可能(a),如果可能,如何做(b)。英语不是我的母语,但我认为它正在传播。我将改写每个人都会理解的问题。谢谢。
-
非常有趣的问题!在
str和len都未知的一般情况下,以及单独str未知的情况下,这似乎是不可能的。如果str的长度是已知的,并且len由某个合理的固定值限制,则可以生成编译为单个字符串常量的复合三元表达式。 -
虽然已经这样回答了,但我想做出区分以澄清一些事情。预处理器无法确定字符串常量的长度,因此它无法执行所要求的操作。但是在编译期间还有很多事情要做;询问预处理器是否可以填充与您是否可以在编译时填充是两个不同的问题(有不同的答案)。
标签: c string c-preprocessor