GNU C __attribute__ 机制简介
摘要:
在学习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
的特征,它可以使编译器检查函数声明和函数实际调用参数之间的格式化字符串是否匹配?
8霉δ苁钟杏茫绕涫谴硪恍┖苣逊⑾值腷ug。
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
相关文档:
[C/C++ Digestion] –
重载操作符
作者:
Jason Lee @
http://blog.csdn.net/jasonblog
日期:
2010-04-17
[1]
重载操作符
重载操作符从大的方面来讲可以分为两类:最好或必须作为类的成员函数的,以及相反。而具体地讲,最好或必须作为类的成员函数的有赋值操作符
( = )
、下标操作符
( [] ) ......
今天配置了一下netbeans的c++编译环境,所以写一篇日志备忘,同时也供广大网友参考和学习。
准备资源:
1、netbeans 可以到官方网站下载zh-cn.netbeans.org/
2、MinGW编译器(MinGW中有g++和gcc编译器)点此处下载,可以到我提供的csdn的共享下载,由于大小限制分两部分
地址:第一部分 http://download.csdn.net/sour ......
CPU:s3c2410
OS:Linux Kernel 2.6.30.4
最近刚做完的嵌入式键盘的驱动,由于初次接触,总结一下。
首先简单说说这个键盘的实现原理,IIC总线工作原理没必要废话,s3c2410的手册中讲的很明白。硬件方面这个键盘通过一个AVR单片机(ATMEGA48)接在IIC总线上,也就是说,直接与IIC总线链接的设备并不是我们用的键盘,而是 ......
XCode:你可以把它看成是一个开发环境,就好像Visual Studio或者Netbeans或者SharpDevelop一样的玩
意。你可以将Interface Builder认为是Visual Studio中用来画界面的那部分功能单独提出来的程序。
Objective-C:这是一种语言,就好像c++是一种语言,Java是一种语言,c#是一种语言,莺歌历史也是一
种语言一样。
Coco ......
1) -/+: 这个称做scope, 如果在函数前面是- ,那么理解为一般的函数;如果是+, 可以理解为c++中的static函数
2) 函数的参数声明:
如果没有参数的话,在函数名后面,可以什么都不写;
如果只有一个参数,在 : 后面声明参数的类型和名称;
如果有多个参数的话,每个参数前面都要有一个 : , 然后接着是参数类型和参 ......