C++ #在c/c+中定义uuu属性uuu((始终u内联))求值+;
我有一个宏:C++ #在c/c+中定义uuu属性uuu((始终u内联))求值+;,c++,c,macros,C++,C,Macros,我有一个宏: #定义内联属性((始终内联))内联 我希望它能改变这一点: INLINE void DoStuff() { } 为此: __attribute__((always_inline)) inline void DoStuff() { } 但我在编译时遇到了这样一个错误:宏扩展中的“声明不声明任何内容”。我做错了什么?这是gcc系列编译器的正确方法 #define INLINE inline __attribute__((always_inline)) int INLINE a
#定义内联属性((始终内联))内联
我希望它能改变这一点:
INLINE void DoStuff() {
}
为此:
__attribute__((always_inline)) inline void DoStuff() {
}
但我在编译时遇到了这样一个错误:宏扩展中的“声明不声明任何内容”。我做错了什么?这是gcc系列编译器的正确方法
#define INLINE inline __attribute__((always_inline))
int INLINE add(int x, int y)
{
return x + y;
}
int main()
{
printf("%d", add(rand(), rand()));
}
预处理器执行文本替换,与您尝试执行的操作完全相同。它不“计算”宏。与其强迫人们猜测你做错了什么,不如尝试(1)以其他人可以用来获得相同行为的形式提供显示问题的实际代码(2)在你的问题中包含错误消息。什么是
\u属性
和始终是内联的
?你是如何定义它们的?@landstaller抱歉,我指的是gcc的属性。已编辑。在这种情况下,您应该在您的帖子中编辑此alos#define INLINE(始终_INLINE))INLINE
:define INLINE(始终_INLINE))INLINE,您仍然在构建您的先入之见。如果使用-E-P标志(即“在宏的扩展中”)编译,我严重怀疑您是否会收到错误“声明不声明任何内容”,因为预处理器没有声明的概念。这正是导致我的编译器发送错误的原因。问题解决了!我经常看到程序员错误地声明内联属性,将其放在类型之前,甚至在谷歌的一些顶级搜索结果上也是如此。似乎有些安装有点松散,但我的编译器配置不是。