GNU C编译器扩展关键字__attribute__
GNU C增加了一个__attribute__关键字用来声明一个函数、变量或者类型的特殊属性,声明这个特殊属性有什么用呢?主要用途指导编译器在编译程序时进行特定的优化或者代码检查,例如,我们可以通过属性声明来指定某个变量或者数据的对齐方式
__attribute__的使用非常简单,当我们定义一个函数,变量或者类型时,直接在他们的旁边添加下面的属性 声明即可。
__atribute__((ATTRIBTE))
注意,__attribute__后面是两对小括号,不能图方便只写一对,否则编译报错。括号里面的ATTRIBUTE表示要声明的属性,目前__attribute__支持十几种属性声明
这里的weak感觉很管用,写C代码,经常会遇到自己写的代码重复定义的问题,有了这个可以避开一些此类链接错误。
使用示例:
char c2 __attribute__((aligned(8)) = 4;
int global_val_attribute__((section(".data")))
char c2 __attribute__((packed,aligned(4)));
char c2 __attribute__((packed,aligned(4))) = 4;
__attribute_((packed, aligned(4))) char c2 = 4;
char c2 = 4 __attribute__((packed, aligned(4)));
编译后的那些段
.interp
.note
.note
.gnu
.dynsym
.dynstr
.gnu.version
.gnu.version_r
.rel.dyn
.rel.plt
.init
.plt.got
.text
.fini
.rodata
.eh_frame_hdr
.eh_frame
.init_array
.fini_array
.jcr
.dynamic
.got
.got.plt
.data
.bss
.comment
.shstrab
.symtag
.strtab
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务