GNU C 扩展功能详解
在 C 语言编程中,GNU C 提供了许多实用的扩展功能,这些扩展功能能帮助程序员更高效地编写代码、优化程序性能。下面将详细介绍这些扩展功能。
内联函数(Inline Functions)
内联函数是一种特殊的函数,编译器会将内联函数的代码直接复制到调用该函数的地方,而不是像普通函数那样存储在外部并在调用时进行跳转。这样做可以节省函数调用的开销,并且编译器可以对调用者和被调用者一起进行优化,尤其是当函数的参数在调用点是常量时。不过,将函数复制到每个调用它的代码块中可能会增加代码的大小。因此,只有那些小而简单,或者不会在很多不同地方被调用的函数才适合内联。
GCC 多年来一直支持 inline 关键字,用于指示编译器将给定的函数内联。C99 对这个关键字进行了规范化:
static inline int foo (void) { /* ... */ }
但实际上, inline 关键字只是一个提示,建议编译器考虑内联给定的函数。GCC 还提供了一个扩展,用于指示编译器始终内联指定的函数:
static inline __attribute__ ((always_inline)) int foo (void) { /* ... */ }
内联函数的一个常见替代是预处理器宏。GCC 中的内联函数性能与宏相当,并且还能进行类型检查。例如,将宏:
超级会员免费看
订阅专栏 解锁全文
1378

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



