请选择 进入手机版 | 继续访问电脑版

硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1949|回复: 5
收起左侧

C语言的C23标准变更详解

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106386
QQ
发表于 2023-1-21 07:20:45 | 显示全部楼层 |阅读模式
[url=https://htmlpreview.github.io/?https://icube-forge.unistra.fr/i ... aw/main/README.html]https://htmlpreview.github.io/?h ... aw/main/README.html[/url]

这是一篇非常棒的变更介绍帖子


回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2023-1-28 23:04:39 | 显示全部楼层
很好的资料
回复

使用道具 举报

8

主题

157

回帖

181

积分

初级会员

积分
181
发表于 2024-1-16 17:59:48 | 显示全部楼层
C23终于有了静态编译检查了,之前都是自己写
回复

使用道具 举报

8

主题

157

回帖

181

积分

初级会员

积分
181
发表于 2024-1-16 18:06:16 | 显示全部楼层
[C] 纯文本查看 复制代码
举例
#include <stdio.h>

int main() {
    _Static_assert(sizeof(int) == 4, "int类型不是4字节");
    
    printf("Hello, world!\n");
    return 0;
}
回复

使用道具 举报

8

主题

157

回帖

181

积分

初级会员

积分
181
发表于 2024-1-16 18:07:01 | 显示全部楼层
C语言是一种静态类型语言,它不直接支持泛型编程。然而,可以使用一些技巧来实现类似于泛型的功能。这些技巧在代码中增强了对类型的选择,使得代码更具灵活性和通用性。

下面是一个示例,展示如何使用宏和预处理指令来实现类似于泛型的选择:
[C] 纯文本查看 复制代码
#include <stdio.h>

#define MAX(a, b) ((a) > (b) ? (a) : (b))

int main() {
    int x = 10;
    int y = 20;
    int max_int = MAX(x, y);
    
    double a = 3.14;
    double b = 2.71;
    double max_double = MAX(a, b);
    
    printf("Max of integers: %d\n", max_int);
    printf("Max of doubles: %f\n", max_double);
    
    return 0;
}

在上面的示例中,我们定义了一个宏MAX(a, b),它接受两个参数a和b,并返回较大的那个值。这个宏使用三元运算符来比较a和b的大小,并返回较大的那个值。

在main函数中,我们使用了宏MAX来比较不同类型的变量。首先,我们比较了两个整数x和y,得到了最大值max_int。然后,我们比较了两个浮点数a和b,得到了最大值max_double。

通过使用宏和预处理指令,我们可以在编译时根据不同的类型生成不同的代码。这种方式虽然可以达到类似于泛型的效果,但它也有一些局限性,比如无法处理复杂的数据结构或者进行类型安全检查。

除了宏,还可以使用其他技术来实现类似于泛型的选择,比如使用函数指针或者使用模板技术(如C++中的模板)。这些方法更加灵活和类型安全,但也会增加代码的复杂性。
回复

使用道具 举报

8

主题

157

回帖

181

积分

初级会员

积分
181
发表于 2024-1-16 18:12:01 | 显示全部楼层
[C] 纯文本查看 复制代码
#include "cmsis_os2.h"

void thread_func(void *argument) {
  _Thread_local int thread_id = 0;   // 线程本地存储的变量

  // ...
}



C11 引进存储区域标识符:引入了_Thread_local关键字,用于指定线程本地存储的变量。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-18 10:03 , Processed in 0.173139 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表