[英]What will the GCC pre-processor look to optimize?
假設我們有一個宏+一個函數:
#define MY_MACRO (2*64)
int foo(void)
{
return (2 * (MY_MACRO));
}
gcc MY_MACRO
會在編譯時將MY_MACRO
優化為等於128,而不是將計算作為運行時操作? 並在return語句中更進一步,是否會以類似的方式將其優化為等於256?
如果是這樣,在可能的優化方面,預處理器還會尋找什么其他東西?
GCC預處理程序將優化什么?
沒有。 預處理器不會執行優化-它所做的只是擴展宏和#include
指令。
但是,一旦預處理程序完成了代碼,編譯器就會看到:
return (2 * ((2*64)));
它肯定可以優化到return 256
的等效值。 它既不知道也不在乎輸入(2*64)
是由宏生成的。
是的,優化器(不是預處理器)應合並常量。
通過積極的優化,它甚至可以將整個函數內聯為int常量256。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.