当前位置: 技术问答>linux和unix
菜鸟提问100分,帮我看看一句源代码,就一句!:)~
来源: 互联网 发布时间:2015-04-11
本文导语: 如下: #define __init __attribute__ ((__section__ (".init.text"))) | 这是Gcc的对C的扩展,详请请看info gcc里的c/C++ extensions | __attribute__是gcc对c/c++的扩展关键字。简单的讲 它得主要目...
如下:
#define __init __attribute__ ((__section__ (".init.text")))
#define __init __attribute__ ((__section__ (".init.text")))
|
这是Gcc的对C的扩展,详请请看info gcc里的c/C++ extensions
|
__attribute__是gcc对c/c++的扩展关键字。简单的讲
它得主要目的是帮助编译器优化你的代码和让编译器更仔细的检查你的代码。
它提供对函数声明,变量声明,类型声明的属性声明。
如下形式 __attribute__ ((属性列表)) 属性列表:属性 (属性值),属性…(如果在头文件中声明的话,属性可以写为 __属性__的形式, (属性值)如果该属性需要指定值才需要写)
对于所有平台支持属性:
函数声明:noreturn, noinline, always_inline, pure, const, format, format_arg, no_instrument_function, section, constructor, destructor, used, unused, deprecated, weak, malloc, alias。
例: void fatal () __attribute__ ((noreturn));
extern int my_printf (void *my_object, const char *my_format, ...) __attribute__ ((format (printf, 2, 3)));
变量声明:aligned, mode, nocommon, packed, section, transparent_union, unused, deprecated, vector_size, weak。
例: struct duart a __attribute__ ((section ("DUART_A"))) = { 0 };
struct duart b __attribute__ ((section ("DUART_B"))) = { 0 };
char stack[10000] __attribute__ ((section ("STACK"))) = { 0 };
int init_data __attribute__ ((section ("INITDATA"))) = 0;
int x __attribute__ ((aligned (16))) = 0;
类型定义:aligned, packed, transparent_union, unused, deprecated。
例:typedef int more_aligned_int __attribute__ ((aligned (8)));
对于特定目标平台:查阅手册。
所有属性具体含义:查阅手册。
对于一般编程我想你可能并不需要指定__attribute__。只为学习吧。
它得主要目的是帮助编译器优化你的代码和让编译器更仔细的检查你的代码。
它提供对函数声明,变量声明,类型声明的属性声明。
如下形式 __attribute__ ((属性列表)) 属性列表:属性 (属性值),属性…(如果在头文件中声明的话,属性可以写为 __属性__的形式, (属性值)如果该属性需要指定值才需要写)
对于所有平台支持属性:
函数声明:noreturn, noinline, always_inline, pure, const, format, format_arg, no_instrument_function, section, constructor, destructor, used, unused, deprecated, weak, malloc, alias。
例: void fatal () __attribute__ ((noreturn));
extern int my_printf (void *my_object, const char *my_format, ...) __attribute__ ((format (printf, 2, 3)));
变量声明:aligned, mode, nocommon, packed, section, transparent_union, unused, deprecated, vector_size, weak。
例: struct duart a __attribute__ ((section ("DUART_A"))) = { 0 };
struct duart b __attribute__ ((section ("DUART_B"))) = { 0 };
char stack[10000] __attribute__ ((section ("STACK"))) = { 0 };
int init_data __attribute__ ((section ("INITDATA"))) = 0;
int x __attribute__ ((aligned (16))) = 0;
类型定义:aligned, packed, transparent_union, unused, deprecated。
例:typedef int more_aligned_int __attribute__ ((aligned (8)));
对于特定目标平台:查阅手册。
所有属性具体含义:查阅手册。
对于一般编程我想你可能并不需要指定__attribute__。只为学习吧。
|
唉
http://www.gnu.org/manual
http://www.gnu.org/manual