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
相关文档:
/////////////////////////////////////////////////
// 主题:一段用来判断日期是星期几的代码
// 描述:摘自《CCFAQ》
// 作者:天之枫
// 时间:2010-02-13
/////////////////////////////////////////////////
#include <stdio.h>
int dayofweek(int y, int m, int d) // 判断输入的日期是星期几
......
今天配置了一下netbeans的c++编译环境,所以写一篇日志备忘,同时也供广大网友参考和学习。
准备资源:
1、netbeans 可以到官方网站下载zh-cn.netbeans.org/
2、MinGW编译器(MinGW中有g++和gcc编译器)点此处下载,可以到我提供的csdn的共享下载,由于大小限制分两部分
地址:第一部分 http://download.csdn.net/sour ......
1.传统上,C语言要求必须在一个代码块的开始处声明变量,在这之前不允许任何其他语句。现在C99遵循C++的惯例,允许把声明放在代码块中的任何位置。然而,在首次使用变量之前仍然必须先声明它。
2.操作系统和C库通常使用以一个或两个下划线开始的名字,因些你自己最好避免这种用法。
3.C语言的名字是区分大小写的。 ......
XCode:你可以把它看成是一个开发环境,就好像Visual Studio或者Netbeans或者SharpDevelop一样的玩
意。你可以将Interface Builder认为是Visual Studio中用来画界面的那部分功能单独提出来的程序。
Objective-C:这是一种语言,就好像c++是一种语言,Java是一种语言,c#是一种语言,莺歌历史也是一
种语言一样。
Coco ......
在Linux用c编程,很多时候都会碰到结构体这个概念,尤其是使用指针访问结构体成员。(下面的文字介绍,请参考代码理解)
1. 使用一个新运算符:->,这个运算符有一个连接号(-)后跟一个大于符号(>)组成
&nbs ......