gpt4 book ai didi

c - c中的奇怪宏,使用多个语句

转载 作者:太空宇宙 更新时间:2023-11-04 08:54:56 25 4
gpt4 key购买 nike

<分区>

我在阅读 linux 源代码时发现了一些奇怪的语法。container_of 宏看起来像

#define container_of(ptr, type, member) ({                      \
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})

令我困惑的是像 ({statement1; statement2;}) 这样的语法

我尝试了一些简单的代码,比如

int a = {1;2;};

我用gcc编译的。运行后'a'好像是2。但是用Microsoft VC++编译不出来。此语法是 gcc 的扩展功能吗?如果是这样,我如何在没有 gcc 扩展的情况下获得相同的效果,例如定义多个语句并使用宏返回一个值?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com