Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ #在c/c+中定义uuu属性uuu((始终u内联))求值+;_C++_C_Macros - Fatal编程技术网

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标志(即“在宏的扩展中”)编译,我严重怀疑您是否会收到错误“声明不声明任何内容”,因为预处理器没有声明的概念。这正是导致我的编译器发送错误的原因。问题解决了!我经常看到程序员错误地声明内联属性,将其放在类型之前,甚至在谷歌的一些顶级搜索结果上也是如此。似乎有些安装有点松散,但我的编译器配置不是。