域 " 将紧接着 V 分配。属性 :"/ 的用途大多是定义硬件相关的结构,使元素
之间没有因对齐而造成的空洞。
9、内建函数
提 供 了 大 量 的 内 建 函 数 , 其 中 很 多 是 标 准 库 函 数 的 内 建 版 本 , 例 如
:,它们与对应的 库函数功能相同,本文不讨论这类函数,其他内建函数的名字通
常以5 开始。
内建函数5"(BTB-返回当前函数或其调用者的返回地址,参数
BTB 指定调用栈的级数,如 $ 表示当前函数的返回地址, 表示当前函数调用者的返回
地址,依此类推。例如:
/
:/(ABCBCC)3?))="**:)++
5"($--!
内建函数5":(BIP-用于判断一个值是否为编译时常数,如果参数 BIP
的值是常数,函数返回,否则返回$。
"4. 5:
95(+"-
(5":(-<
"5((-+("--3
=""55((-+("---
很多计算或操作在参数为常数时有更优化的实现,在 中用上面的方法可以根据
参数是否为常数,只编译常数版本或非常数版本,这样既不失通用性,又能在参数是常数
时编译出最优化的代码。
内建函数5:(BIP+-用于为编译器提供分支预测信息,其返回值是整数表
达式 BIP 的值, 的值必须是编译时常数。例如:
:
9/(-6666665:((-+-
9/(-66665:((-+$-
/
(/(:(---
:/()J:)-!
E(-!
&
这个内建函数的语义是 BIP 的预期值是 ,编译器可以根据这个信息适当地重排语句
块的顺序,使程序在预期的情况下有更高的执行效率。上面的例子表示处于中断上下文是
很少发生的,第 4F 行的目标码可能会放在较远的位置,以保证经常执行的目标码更紧凑。
若不想使用 GNU C 扩展,那么只需要在 gcc 参数后面加上-ansi -pedantic 即可,使用
上述参数后,所有 GNC C 扩展语法部分将会有编译警报。
linux gcc 的属性解析
的一大特色(却不被初学者所知)就是"5机制。"5可以设
置函数属性( 875 )、变量属性( T""575)和类型属性( K:
75)。
"5书写特征是:"5前后都有两个下划线,并切后面会紧跟一对原括