gpt4 book ai didi

c - __extension__ 关键字是否可在所有编译器中移植?

转载 作者:行者123 更新时间:2023-12-04 11:01:13 24 4
gpt4 key购买 nike

__extension__关键字可在所有编译器之间移植?
我在 gcc 手册中查看过它,但他们没有提到这个关键字是否可移植。如果有人知道,我将感谢您的帮助。

最佳答案

不。 C 标准未涵盖的任何内容都是不可移植的。这就是为什么如果我们想要(或必须)使用编译器特定的扩展编译指示或属性,我们需要编写如此糟糕的代码的原因。

#if  defined ( __GNUC__ )
#ifndef __weak
#define __weak __attribute__((weak))
#endif /* __weak */
#ifndef __packed
#define __packed __attribute__((__packed__))
#endif /* __packed */
#endif /* __GNUC__ */


/* In HS mode and when the DMA is used, all variables and data structures dealing
with the DMA during the transaction process should be 4-bytes aligned */

#if defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */
#ifndef __ALIGN_END
#define __ALIGN_END __attribute__ ((aligned (4U)))
#endif /* __ALIGN_END */
#ifndef __ALIGN_BEGIN
#define __ALIGN_BEGIN
#endif /* __ALIGN_BEGIN */
#else
#ifndef __ALIGN_END
#define __ALIGN_END
#endif /* __ALIGN_END */
#ifndef __ALIGN_BEGIN
#if defined (__CC_ARM) /* ARM Compiler */
#define __ALIGN_BEGIN __align(4U)
#elif defined (__ICCARM__) /* IAR Compiler */
#define __ALIGN_BEGIN
#endif /* __CC_ARM */
#endif /* __ALIGN_BEGIN */
#endif /* __GNUC__ */

关于c - __extension__ 关键字是否可在所有编译器中移植?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58784384/

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