我想通过UART发送字符串来调试我的C微控制器程序。
现在我遇到了一个问题,即如何将调试字符串连接在一起,因为我必须使用c字符串。
我需要在堆栈上有debugMessageOnStack
。
考虑以下示例: 我需要一个像“我的最爱颜色是山茶玫瑰色”这样的字符串。
const char debugMessageStart[] = "My favorite color is ";
const char* colors[MAX_COLORS] = {[GREEN] = "green", [ORANGE] = "orange", [PINK] = "mountbatten pink"};
char debugMessageOnStack[DEBUG_MESSAGE_LENGTH];
我知道手动计算DEBUG_MESSAGE_LENGTH
相当容易,但我希望能够动态计算它,这样每次添加一个比所有已有颜色字符串都长的新颜色字符串时,我就不必手动重新计算它。
理论上讲,由于编译前会知道colors
中每个字符串的长度,因此应该是可能的,但我不知道该如何实现。
谢谢!
char debugMessageOnStack[DEBUG_MESSAGE_LENGTH];
,其中DEBUG_MESSAGE_LENGTH
比任何消息都要长,例如300,这应该足够了。 - Jabberwocky.bss
中的静态变量进行分配。 - Lundin