C++的__attribute__((format(printf,m,n)))

C++的__attribute__((format(printf,m,n))),第1张

(首先这个问题和__attribute__((format(printf,m,n)))关系不是很大……)

首先包含头文件stdarg.h

void F(const char* a , ...){     

    va_list vl//可变参数列表

    va_start(vl, a/*省略号前的最后一个参数*/)//初始化参数列表

    //先这里进行一些预备处理,获知可变参数的数量,类型等等

    //接下来读取并处理可变参数

    for (int i=0i<n/*可变参数数量*/i++)  {    

        val/*可变参数接收变量*/=va_arg(vl,typename/*可变参数类型*/)//获得下一个参数的值    

        //其他处理  

    }

    va_end(vl)//结束

}

《C30编译器用户指南》中有介绍,给个邮箱给你发过去。

2.3.1 指定变量的属性

编译器的关键字 __attribute__ 用来指定变量或结构位域的特殊属性。关键字后的

双括弧中的内容是属性说明。下面是目前支持的变量属性:

• address (addr)

• aligned (alignment)

• boot

• deprecated

• fillupper

• far

• mode (mode)

• near

• noload

• packed

• persistent

• reverse (alignment)

• section ("section-name")

• secure

• sfr (address)

• space (space)

• transparent_union

• unordered

• unused

• weak

weak也可以通过在关键字前后使用 __(双下划线)来指定属性(例如,用

__aligned__代替aligned)。这样将使你在头文件中使用它们时不必考虑会出现与

宏同名的情况。

要指定多个属性,可在双括弧内用逗号将属性分隔开,例如:

__attribute__ ((aligned (16), packed))。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12104262.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存