我是靠谱客的博主 危机小蝴蝶,最近开发中收集的这篇文章主要介绍C语言的属性:__attribute__1. 变量的属性2. 函数的属性3. 类型的属性,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
1. 变量的属性
详细内容参考:变量的属性
注:
1)_attribute_后面必须为两对括号:((…))
2)属性关键字的前后也可加“_”,如aligned可为__aligned_
1.1 对齐(aligned (alignment))
指定变量或结构域的起始地址对齐(以字节为单位):
int x __attribute__ ((aligned (16))) = 0; // 16字节对齐
struct foo
{
int x[2] __attribute__ ((aligned (8))); // 8字节对齐
};
// ask the compiler to align a variable or field to
// the maximum useful alignment for the target machine you are compiling for
short array[3] __attribute__ ((aligned));
1.2 紧凑型 (packed)
变量或结构域以最小对齐单位对齐,如变量以字节对齐,结构域以位对齐:
struct foo
{
char a;
int x[2] __attribute__ ((packed)); // it immediately follows a
};
1.3 指定代码段(section (“section-name”))
把变量或函数放于指定的代码段:
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;
main()
{
/* Initialize stack pointer */
init_sp (stack + sizeof (stack));
/* Initialize initialized data */
memcpy (&init_data, &data, &edata - &data);
/* Turn on the serial ports */
init_duart (&a);
init_duart (&b);
}
1.4 向量尺寸(vector_size (bytes))
指定向量的大小,以字节为单位:
int foo __attribute__ ((vector_size (16)));
int foo __attribute__ ((__vector_size__ (16)));
struct S { int a; };
struct S __attribute__ ((vector_size (16))) foo;
2. 函数的属性
详细内容参考:函数的属性
3. 类型的属性
详细内容参考:类型的属性
typedef int more_aligned_int __attribute__ ((aligned (8)));
typedef long HEXAGON_VecPred128 __attribute__((__vector_size__(128)))
__attribute__((aligned(128)));
最后
以上就是危机小蝴蝶为你收集整理的C语言的属性:__attribute__1. 变量的属性2. 函数的属性3. 类型的属性的全部内容,希望文章能够帮你解决C语言的属性:__attribute__1. 变量的属性2. 函数的属性3. 类型的属性所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复