我正在編譯時查找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++。
所以你不能改變的定義呢?例如。宏魔法或C++魔術.. – dyp 2013-05-01 18:06:29
對於'static const char * const header_left []'而言,長度無關緊要,因爲這是一個指針數組。你是否想要'static const char header_left [] [sizeof「Interval#| Duration | Point | Point |」] = {...};'? – 2013-05-01 18:06:34
@DanielFischer:我需要複製你的案例中的文本,一次是'sizeof',另一次是'{'和'}'之間的時間嗎? – 2013-05-01 18:13:06