[問題] 請問算 const string 長度比較快的方法

看板C_and_CPP (C/C++)作者 (過客罷了)時間16年前 (2009/02/16 17:57), 編輯推噓5(504)
留言9則, 6人參與, 最新討論串1/1
例如 使用gcc #define AAA "AAA" strlen(AAA) = 3 但是 sizeof(AAA) = 4 所以我之前的寫法常常要改成 (sizeof(AAA) -1) 才能表現出真正長度 但是這樣還是會多運算一次減法 gcc 有沒有什麼比較快的解法可以直接算出 constant string 的長度 在此先謝謝回答:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.89.50

02/16 18:07, , 1F
#define AAALEN 3
02/16 18:07, 1F

02/16 18:10, , 2F
sizeof(AAA)-1 應該不會多運算一次吧
02/16 18:10, 2F

02/16 18:13, , 3F
也對... 聰明的 compiler 應該會直接用 3 代掉
02/16 18:13, 3F

02/16 18:14, , 4F
其實, 這只能算 string literal 的長度, 而不是 const
02/16 18:14, 4F

02/16 18:14, , 5F
string 的長度.
02/16 18:14, 5F

02/16 18:22, , 6F
等等..sizeof(AAA) == 4 吧?後面的 '\0' 呀?
02/16 18:22, 6F

02/16 18:27, , 7F
sizeof(AAA) -1 編譯時候就會替換成3了
02/16 18:27, 7F

02/16 19:56, , 8F
剛剛compile 然後gdb disassemble 一下
02/16 19:56, 8F

02/16 19:57, , 9F
的確 sizeof(AAA) - 1 會直接代換3 謝謝大家的回答
02/16 19:57, 9F
文章代碼(AID): #19cJXzEP (C_and_CPP)
文章代碼(AID): #19cJXzEP (C_and_CPP)