看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《pichubaby (Pichu)》之銘言: : ※ 引述《truesword ( )》之銘言: : : void tranform(char *s){ : : int i=0; : : for(i; i<strlen(s); i++){ : : if(s[i]>'A' && s[i]<'Z'){ : : s[i] -= 'A'-'a'; :  這行 :   我想問的是  :   大家應該都當作編譯器會自動最佳化,所以為了可讀性可以這樣寫 :   但是假如他的型別為自定義型別 : 例如 :       s[i] -= _T('A') - _T('a'); : 的話,編譯器仍然會跟進去做最佳化嗎? : : } : : } : : } _T 這例子可能不太好 因為至少對 compiler 來說 在變成 L'A' 之後它還是一個 wchar_t 的常數 這個型態的常數相減它還是可以自己做 所以這個情形一樣會處理掉 但我想你要問的是一些自訂型別的 ctor 的樣子 例如 foo('A') - foo('a') (若 class foo 有 foo(char) 及 operator - 的話) 這種我覺得就不一定了 可能最多做到 inline 而不會最佳化到底 畢竟 compiler 並不知道你到底寫了什麼東西在那裡面... (當然 inline 後有沒有可能進一步最佳化也是個問題就是) -- "LPH" is for "Let Program Heal us".... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.254.23.234
pichubaby:恩 的確用class foo會比較接近原意 03/02 17:19
pichubaby:考慮到連結後不在進行最佳化的話,或許就真的不會做到底 03/02 17:19
pichubaby:那假如連結後有可能繼續最佳化下去嗎? 03/02 17:20