我正在尝试编写一个简单的宏来为它添加一个断行。这是对的吗?:
#define DEBUG_PRINT(message, ...) \
message += "\n"; \
_RPTN(0, message, __VA_ARGS__)
使用:
DEBUG_PRINT("my messages %s %d", anotherString, someNumber)
由于某种原因,编译器不接受它并带有消息:
Cannot assign to an array type 'char const[theSizeOfTheString]'
提前感谢您的答案! :)
答案 0 :(得分:2)
如果您知道message
将是一个常量字符串,您可以这样做:
#define DEBUG_PRINT(message, ...) _RPTN(0, message "\n", __VA_ARGS__)
有关详细信息,请参阅cppreference处的字符串文字:
并排放置的字符串文字在翻译时连接在一起 第6阶段(在预处理器之后)。也就是说,
"Hello," " world!"
会产生 (单个)字符串"Hello, world!"
。如果两个字符串相同 编码前缀(或两者都没有),结果字符串将具有 相同的编码前缀(或没有前缀)。