客服QQ:250304218 9459803 维修网站群:中华维修网 | 维修资料下载 | 中华维修论坛
新闻资讯 网络学院 电脑维修 办公维修 家电维修 维修视频 维修资料 中维商城 维修论坛
业界硬件办公家电数码
操作系统安全技术软件应用媒体动画图形图像办公系列网络应用
维修基础软件专题CPU/内存故障硬盘专栏显示器鼠标键盘电源/主板故障声卡显卡光储设备网络设备笔记本
导购DIY专区硒鼓加粉打印机复印机传真机 扫描仪一体机
电视维修影音设备家电常识综合电器
  您现在的位置: 中华维修网 >> 网络学院 >> 程序设计 >> 正文
GNU C __attribute__ 机制简介
作者:佚名 文章来源:本站原创 点击数: 更新时间:2008-4-28 13:32:00
 GNU C __attribute__ 机制简介



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(scanf,m,n)))
其中参数m与n的含义为:
m:第几个参数为格式化字符串(format string);
n:参数集合中的第一个,即参数“…”里的第一个参数在函数参数总数排在第几,注意,有时函数参数里还有“隐身”的呢,后面会提到;
在使用上,__attribute__((format(printf,m,n)))是常用的,而另一种却很少见到。下面举例说明,其中myprint为自己定义的一个带有可变参数的函数,其功能类似于printf:
//m=1;n=2
extern void myprint(const char *format,...) __attribute__((format(printf,1,2)));
//m=2;n=3
extern void myprint(int l,const char *format,...) __attribute__((format(printf,2,3)));
 

[1] [2] [3] [4] [5] [6] [7] 下一页

 主板维修教材  笔记本维修视频教程  硬盘维修视频教程  芯片级焊接教学视频   电路基础教程   维修工具 
文章录入:鞠中山    责任编辑:鞠中山 
【字体:
最近更新
· FlashMX新特性详解(四)学习资源和软件
· 导入电影的控制
· flash MX中怎么画正多边形
· 2005年新春FLASH大贺岁
· FLASHMX 2004 Media组件实现多首mp3连
· 函数的封装解释
· 巧用Photoshop简单绘制一个西红柿
· Fireworks 组合路径功能小解
· Fireworks 用滤镜做动画
· GNU C __attribute__ 机制简介
推荐文章
· Windows XP系统被远程入侵
· 在网吧QQ密码被盗
· 浏览一些网页后硬盘被完全共享
· 共享文件后经常死机
· IE无法打开网页
· 病毒导致鼠标不能正常工作
· 病毒导致花屏
· 在Java中获取系统属性
· JAVA MSN机器人主要代码开放
· 计算机等级考试三级网络技术复习提纲
关于中维 | 联系方法 | 付款方式 | 广告服务 | 加入我们 | 帮助中心 | 网站地图 | 友情合作 | 加入收藏 | 设为首页
Copyright (C) 1999-2006 91Xiu.Com, All Rights Reserved 版权所有 中华维修网
全国统一客服热线: 400-658-3058 未开通400地区请拨打0536-3289280 13306362398
客服QQ:250304218 9459803 
 
青州众维科技 版权所有    鲁ICP备05001127号