
__attribute__
C 语言 __attribute__ 相关用法
tyustli
不抛弃,不放弃
展开
-
【C语言】—— __attribute__((fallthrough))
是一个在编译器中使用的特性,用于指示在 switch 语句中的 case 标签中故意省略 break 语句时的意图。然而,有时候我们可能希望在某些情况下,多个 case 标签共享相同的代码块,而不是每个 case 都有自己的代码块。当我们在一个 case 标签中故意省略 break 语句时,可以使用该特性来告诉编译器,这个省略是有意为之的,以避免编译器给出警告。在上面的代码中,当 choice 的值为 2 时, case 2 中的 printf 语句会执行,然后通过。原创 2023-07-30 20:40:02 · 2034 阅读 · 0 评论 -
C语言--__attribute__((packed))
packed的作用是取消字节对齐#include<stdio.h>typedef struct { int i; //4 char a; //1 char b; //1 char c; //1 //1}Test1;typedef struct { int i; //4 char a; /...原创 2019-01-11 11:34:46 · 1622 阅读 · 0 评论 -
C语言--__attribute__((weak))
在 main.c 文件中使用 __attribute__((weak)) 定义一个弱函数return 0;/***程序输出结果:19 ***/在 main.c 文件中使用 __attribute__((weak)) 定义一个弱函数return 0;/****程序输出结果: 21 ********/原创 2019-01-11 10:26:28 · 2206 阅读 · 0 评论 -
C语言--__attribute__((noreturn))
1、#include <stdlib.h>#include <stdio.h>void Fun_Exit(void){ exit(1);}int Fun_Test(int n){ if (n > 0) { Fun_Exit(); printf("Hello World\r\n"); ...原创 2019-01-13 21:55:31 · 719 阅读 · 1 评论 -
C语言--__attribute__((aligned(n)))
#include<stdio.h>typedef struct { int i; //4 int d; //4 char a; //1 char b; //1 char c; //1 //1 int e; //4}Test1;typedef struct { int i; //4 ...原创 2019-01-11 12:09:44 · 1250 阅读 · 1 评论 -
__attribute__((deprecated)) 函数属性
代码版本升级时,将 API 重命名了,那么当程序中还在使用旧的 API 名称时就会产生警告,提示用户使用新的 API。如果使用了 deprecated 属性修饰的函数,则编译器必须生成警告。如果未使用该属性修饰的函数则不会产生任何警告。1、此函数属性指示存在某个函数,产生了警告,提示该函数已经废弃。原创 2019-10-13 20:23:51 · 823 阅读 · 0 评论 -
__attribute__((always_inline)) 函数属性
1、这个函数属性表示一个函数必须是内联的编译器尝试内联函数,而不考虑函数的特征,在某些情况下,编译器可能会选择忽略attribute__((always_inline))属性,而不内联函数。例如: 递归函数永远不会内联到自身中。 使用alloca()的函数从不内联。2、这个函数属性是ARM编译器支持的GNU编译器扩展。它的关键字等效于内联的 __forceinline。...原创 2019-10-13 19:46:45 · 1256 阅读 · 0 评论 -
__attribute__((alias)) 函数属性
1、__attribute__((alias)) 函数属性使你能够为一个函数指定多个别名。2、需要注意的是别名必须和原函数具有相同的类型3、不能在块范围内指定别名。编译器忽略附加到局部函数定义的别名属性,并将函数定义视为普通的局部定义。4、在输出对象文件中,编译器将别名调用替换为对原始函数名的调用,并在原始名称旁边发出别名。例如:static int oldname(int x...原创 2019-10-13 17:37:32 · 1439 阅读 · 0 评论 -
__attribute__((alias)) 变量属性
1、__attribute__((alias)) 变量属性允许你为一个变量指定多个别名2、语法type newname __attribute__((alias("oldname")));oldname:需要另起别名的类型newname:另起的别名3、别名和原始名必须具有相同的类型4、不能在块范围内指定别名。编译器会忽略附加到局部变量定义上的别名属性,并将变量定义视为...原创 2019-10-13 17:49:36 · 979 阅读 · 0 评论 -
__attribute__概述
是特定于编译器的语法,不是标准 C 语言的一部分。因此,它的使用可能在不同的编译器上有所不同。在使用时,应该查阅相应的编译器文档以确保正确使用该特性。__attribute__ 关键字允许指定变量、类型和函数的属性。函数的属性可以在声明的时候指定也可以在定义的时候指定,示例如下。当函数的属性冲突的时候,编译器会选择更加安全或健壮的一个例如。下表总结了函数的属性设置。该关键字的格式如下所示。原创 2019-01-10 22:41:44 · 347 阅读 · 0 评论