前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GNU C的扩展特性代码示例展示~~~~~

GNU C的扩展特性代码示例展示~~~~~

作者头像
CPP开发前沿
发布2024-03-21 17:29:29
780
发布2024-03-21 17:29:29
举报
文章被收录于专栏:CPP开发前沿CPP开发前沿

GNU C:GNU C是GNU项目发布的C语言编译器,也称为gcc。GNU C是ANSI C的扩展版本,它提供了一些ANSI C没有定义的语言特性和扩展库。GNU C编译器是一个跨平台的编译器,可以在不同的操作系统上使用,如Linux、Windows、Mac OS等。GNU C编译器是开源的,可以自由使用和修改。 例如新增语法 1.零长度和变量长度数组 2.case范围 3.语句表达式 4.typeof关键字 5.可变参数宏

下面就来演示一些代码示例,供大家参考学习。

1. 零长度和变量长度数组:

代码语言:javascript
复制
// 零长度数组
struct ZeroLengthArray {
int len;
int data[0]; // 零长度数组
};
// 变量长度数组
void variableLengthArray(int size) {
int array[size]; // 变量长度数组
}

2. case范围:

代码语言:javascript
复制
int number = 5;
switch (number) {
case 1 ... 5: // 使用范围匹配多个case标签
printf("Number is between 1 and 5\n");
break;
case 6:
printf("Number is 6\n");
break;
default:
printf("Number is not in the range\n");
break;
}

3. 语句表达式:

代码语言:javascript
复制
int result = ({
int a = 5;
int b = 10;
a + b; // 语句表达式,返回a + b的结果
});
printf("Result: %d\n", result);

4. typeof关键字:

代码语言:javascript
复制
int number = 10;
typeof(number) newNumber; // 使用typeof获取number的类型
newNumber = number + 5;
printf("New Number: %d\n", newNumber);

5. 可变参数宏:

代码语言:javascript
复制
#include <stdio.h>
#include <stdarg.h>
#define SUM(...) sum(__VA_ARGS__)
int sum(int count, ...) {
va_list args;
va_start(args, count);
int total = 0;
for (int i = 0; i < count; i++) {
total += va_arg(args, int);
}
va_end(args);
return total;
}
int main() {
int result = SUM(1, 2, 3, 4, 5);
printf("Sum: %d\n", result);
return 0;
}

这些示例代码展示了GNU C的扩展特性的用法。请注意,这些特性可能不被所有C编译器支持,因此在使用时请确保目标平台和编译器的兼容性。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CPP开发前沿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档