精華區beta Programming 關於我們 聯絡資訊
※ 引述《coldstar.bbs@bbs.cs.nctu.edu.tw (灑落的月光伴著)》之銘言: > 我不是這個意思 > 對 compiler 來說,要把 printf("%d", b) 最佳化成 printf("10") > 應該需要 compiler 進 printf 裡實地觀察一遍才知道的吧? > 但是現在的 compiler 已經這麼聰明了? 現在的 C compiler 幾乎不會去管 library 裡面的東西, 只要是跟 binary code 扯上關係的, 近代的 C compiler 都不會去管它。 不過並不是沒有特例, 當 printf 被 C compiler 視為 builtin function 時, compiler 就有機會對它做最佳化, 非常早期的幾個 C compiler 有把 printf 視為 builtin, 所以可以做類似的處理, 但是現在都很少見了。 至於 builtin function 的效果, 舉個例子來說, gcc 對 i386 平台設計有把 pow() 這個 function 視為 builtin, 所以當傳入的數值都是編譯期已知的, 就會直接變成常數, 可以試試看在 C 寫 pow(2, 16), 然後用 gcc -S 看 assembly code 的輸出。 -- Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net School: National Chung Cheng University Department: Computer Science and Information Engineering Researching: Porting GCC and Implementing VLIW instruction scheduler in GCC Homepage: https://it.muds.net/~uranus -- ╔═══╗ ┼────────────────────────╮ 狂狷 Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮ 年少 ┼╮ < IP:140.119.164.16 > ╰─╮ ╚╦═╦╝ From:218-171-150-86.dynamic.hinet.net ─╨─╨─ KGBBS 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩