我发现很多编译器都不支持__attribute__
。
#if defined (__GNUC__)
short xxxyyy[aaa_SIZE]__attribute__ ((aligned (32)));
#endif
或甚至
#ifndef __attribute__(x)
#define __attribute__(x)
#endif
据我所知,GNUC是唯一一个支持这个__attribute__
的-是正确的吗?像上面这样使用宏是合理的一般做法吗?
有没有什么C标准支持这一点?还是有更好的办法?
1条答案
按热度按时间0ejtzxu11#
新的C标准(C23-工作草案)添加了
[[attribute]]
的属性。它是便携式的。自C11以来,它们已经是C的一部分。范例:
所有较旧的C标准都没有它,它们是编译器扩展。不要使用它们,除非你真的需要它们(例如编写低级硬件)。
如果这样一个程序必须由许多编译器编译,你将需要大量的
#if
。