硬汉嵌入式论坛

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

[MDK] 在MDK中使用typeof关键字遇到的问题

[复制链接]

76

主题

208

回帖

436

积分

高级会员

积分
436
发表于 2024-3-15 11:42:17 | 显示全部楼层 |阅读模式
本帖最后由 薪火相传 于 2024-3-15 11:55 编辑

在c文件中用到rt_thread自带的typeof关键字,这个似乎是gcc的,在MDK AC5中会报错,
1.png


4.png

在c/c++添加 --gnu 后编译ok

3.png


但在AC6上添加 --gnu编译不通过,换成-fgnu也编译不通过,不知道怎么解决这个问题,哪位大佬能指点一下?










2.png
回复

使用道具 举报

40

主题

213

回帖

343

积分

高级会员

积分
343
发表于 2024-3-15 14:30:02 | 显示全部楼层
[C] 纯文本查看 复制代码
/*---------- includes ----------*/
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>

    /*---------- macro ----------*/

#if defined(__CC_ARM) || defined(__ARMCC_VERSION)
#define container_of(ptr, type, member) ((type *)((char *)ptr - offsetof(type, member)))
#elif defined(__GNUC__)
#define container_of(ptr, type, member)                      \
    ({                                                       \
        const __typeof(((type *)0)->member) *__mptr = (ptr); \
        (type *)((char *)__mptr - offsetof(type, member));   \
    })
#elif defined(_MSC_VER)
#define container_of(ptr, type, member) ((type *)((char *)ptr - offsetof(type, member)))
#else
#define container_of(ptr, type, member) ((type *)((char *)(ptr) - (unsigned long)(&((type *)0)->member)))
#endif
回复

使用道具 举报

9

主题

83

回帖

115

积分

初级会员

积分
115
发表于 2024-3-15 14:53:35 | 显示全部楼层
https://developer.arm.com/documentation/100070/0612/?lang=en
typeof关键字是GNU C的扩展特性,ARMCC5中确实有--gnu实现部分gnu扩展的功能,但是ARMCC6中确实没有,也没有fgnu这样的编译选项。
回复

使用道具 举报

40

主题

213

回帖

343

积分

高级会员

积分
343
发表于 2024-3-15 15:02:07 | 显示全部楼层
我试了一下ac6应该是
-std=gnu99

或者你勾选language C选项里选择gun 99也行吧。
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
发表于 2024-3-15 15:04:09 | 显示全部楼层
Warnings选择 AC5-like Warnings
回复

使用道具 举报

76

主题

208

回帖

436

积分

高级会员

积分
436
 楼主| 发表于 2024-3-15 16:12:43 | 显示全部楼层
点灯一流大师 发表于 2024-3-15 15:04
Warnings选择 AC5-like Warnings

选了

回复

使用道具 举报

76

主题

208

回帖

436

积分

高级会员

积分
436
 楼主| 发表于 2024-3-15 16:19:30 | 显示全部楼层
会飞的猪_2020 发表于 2024-3-15 15:02
我试了一下ac6应该是
-std=gnu99

这两种试了都ok
回复

使用道具 举报

76

主题

208

回帖

436

积分

高级会员

积分
436
 楼主| 发表于 2024-3-15 16:19:50 | 显示全部楼层
WALL_E 发表于 2024-3-15 14:53
https://developer.arm.com/documentation/100070/0612/?lang=en
typeof关键字是GNU C的扩展特性,ARMCC5 ...

了解
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-4 22:31 , Processed in 0.343376 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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