GCC 对 C 语言的扩展
1. 不返回的函数
若函数不会返回(可能是因为它总是调用 exit() ),程序员可以使用 noreturn 关键字标记该函数,让编译器知晓这一情况:
__attribute__ ((noreturn)) void foo (int val) { /* ... */ }
编译器由此可进行额外优化,因为它知道被调用的函数绝不会返回。这种函数返回 void 以外的类型没有意义。
2. 分配内存的函数
如果函数返回的指针不会与现有内存产生别名(很可能是因为该函数刚分配了新内存并返回其指针),程序员可以使用 malloc 关键字标记该函数,编译器进而可进行适当优化:
__attribute__ ((malloc)) void * get_page (void)
{
int page_size;
page_size = getpagesize ( );
if (page_size <= 0)
return NULL;
return malloc (page_size);
}
3. 强制调用者检查返回值
warn_unused_result 属性并非用于优化,而是一种编程辅助手段,它会指示编译器在函数返回值未被存储或用于
超级会员免费看
订阅专栏 解锁全文
938

被折叠的 条评论
为什么被折叠?



