gpt4 book ai didi

c++ - 混合内联和宏函数

转载 作者:太空狗 更新时间:2023-10-29 23:43:37 25 4
gpt4 key购买 nike

我决定尝试一下。我知道宏是邪恶的,应该避免,但我想看看如果我这样做会发生什么。

#include <iostream>
using namespace std;
inline void add(int x, int y) { cout << "Inline: " << x + y << endl; }
#define add(x,y) ( cout << "Macro: " << x + y << endl )

int main()
{
add(3,5);
}

输出:

Macro: 8

如果我注释掉 #define 行,inline 开始工作,输出变成 Inline: 8

我的问题是,为什么编译器决定使用宏函数而不是内联函数。谢谢!

I'm using Linux Mint 18.2, g++ 5.4.0, with no parameters g++ -g t2.cpp -o t2.

最佳答案

宏替换是通过预处理器编译之前执行的。因此,编译器永远不会看到 add(3,5) - 它只会看到宏扩展。

关于c++ - 混合内联和宏函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45782810/

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