コンパイル時に 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
ですか?
この質問、文字列リテラルの長さの決定には、配列を として宣言するコメントがありheader_left[][4]
ます。数量定数を変更せずに文字列の数を変更する傾向があるため、この種の宣言を使用しないことを好みます。私は、コンパイラーに文字列の量 (rows_in_header
定義を参照) と各文字列の長さを計算させるのが好きです。
これは組み込みシステム用で、文字列はシリアル ポートにブロックで書き込まれます。シリアル ポート関数は、データへのポインターとデータの長さをパラメーターとして受け取ります。シリアル ポート コードは、ブロック書き込み用に最適化されています。strlen
パフォーマンス時間が無駄になるため、 使用しないことをお勧めします。
ARM7TDMI プラットフォーム上の IAR Embedded Workshop で C99 を使用しています。
タグを含めたのはc++
、これには C++ も含まれており、最初の製品の発売後にコードを C++ に移行する予定だからです。