我希望在编译时找到 C 字符串文字的长度。给定定义:
static const char * const header_left[] =
{
" | | Raw | Raw |",
" | | Start | End |",
"Interval#| Duration | Point | Point |",
"---------+----------+-------+-------+",
};
const unsigned int rows_in_header = sizeof(header_left) / sizeof(header_left[0]);
如何在header_left[2]
不使用的情况下找到字符串文字的长度strlen
?
在这个问题中,Determining the Length of a String Literal中,有一条注释将数组声明为header_left[][4]
。我不喜欢使用这种声明,因为字符串的数量倾向于在不改变数量常数的情况下发生变化。我喜欢让编译器计算字符串的数量(参见rows_in_header
定义)和每个字符串的长度。
这适用于嵌入式系统,字符串被块写入串行端口。串口函数将指向数据的指针和数据的长度作为参数。串行端口代码针对块写入进行了优化。首选是不使用strlen
,因为这会浪费性能时间。
我在 ARM7TDMI 平台上使用 C99 和 IAR Embedded Workshop。
我已包含该c++
标签,因为这也涉及 C++,我们将在首次产品发布后将代码迁移到 C++。