GNU C __attribute__ 机制简介
GNU C __attribute__ 机制简介
2006-06-17 13:54:00
标签: [推送到技术圈]
摘要:
在学习linux内核代码及一些开源软件的源码(如:DirectFB),经常可以看到有关__attribute__的相关使用。本文结合自己的学习经历,较为详细的介绍了__attribute__相关语法及其使用。
---------------------------------------------------------
声明:
此文为原创,欢迎转载,转载请保留如下信息
作者:聂飞(afreez) 北京-中关村
联系方式:afreez@sina.com (欢迎与作者交流)
初次发布时间:2006-06-17
不经本人同意,不得用语商业或赢利性质目的,否则,作者有权追究相关责任!
---------------------------------------------------------
GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。
__attribute__书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__参数。
__attribute__语法格式为:
__attribute__ ((attribute-list))
其位置约束为:
放于声明的尾部“;”之前。
函数属性(Function Attribute)
函数属性可以帮助开发者把一些特性添加到函数声明中,从而可以使编译器在错误检查方面的功能更强大。__attribute__机制也很容易同非GNU应用程序做到兼容之功效。
GNU CC需要使用 –Wall编译器来击活该功能,这是控制警告信息的一个很好的方式。下面介绍几个常见的属性参数。
__attribute__ format
该__attribute__属性可以给被声明的函数加上类似printf或者scanf的特征,它可以使编译器检查函数声明和函数实际调用参数之间的格式化字符串是否匹配。该功能十分有用,尤其是处理一些很难发现的bug。
format的语法格式为:
format (archetype, string-index, first-to-check)
format属性告诉编译器,按照printf, scanf, strftime或strfmon的参数表格式规则对该函数的参数进行检查。“archetype”指定是哪种风格;“string-index”指定传入函数的第几个参数是格式化字符串;“first-to-check”指定从函数的第几个参数开始按上述规则进行检查。
具体使用格式如下:
__attribute__((format(printf,m,n)))
__attribute__((format(s
相关文档:
Boss说,要看OpenGL,看了快一个月,总算出了个像样的东西,用C写了个3D迷宫,
虽然只有350行
代码,不过边学边写,足足写了一周时间,还是小有成就感的,活活活!
&n ......
到最后还是自己解决了,导致该问题的原因是在linux启动到最后出现:
/bin/sh: can't access tty; job control turned off
而出现该错误的原因和解决方法google后有千百种,尝试了很多种都没有帮我解决问题。
下面是我自己的解决方法:
1. vi /etc/inittab 第一行添加
console::sysinit:/etc/init.d ......
只是有人牵涉到写程序的,我就说说.女主角如果不出来澄清就一辈子被毁了.校风严谨的清华也有这种滥S的行为有点不可思意.找程序员写作业只是个分手的借口吧.女主角还瞒清秀的.出来讨债的"冤大头"其实也不理智,毁了前女友的幸福很好吗?
但愿C语言门只是个娱乐 ......
能整理大部分无用文件
#!/usr/bin/python
#syscleaner.py
import os
import os.path
#delete files and directory recursively
def itedel(dir):
print('in dir :'+dir)
for doc in os.listdir(dir):
try:
if(os.path.isdir(doc)):
itedel(dir+'\\'+doc)
......