如何搜索此问题(范围内的宏与内联函数)

问题描述 投票:0回答:1

我对范围有一些疑问。

我认为宏的行为类似于复制和粘贴,内联函数与此类似但不相同。

但是,我不知道为什么这个代码对我的想法不同。

我不知道要搜索哪个关键字,请告诉我一些关键字来搜索。

谢谢你的阅读。

'''
inline int add(int a, int b)
{
    return a + b;
}

int main()
{
    int num1;

    num1 = add(10, 20);

    printf("%d\n", num1);

    return 0;
} // is same as below
'''
int main()
{
    int num1;

    num1 = int add(int a=10, int b=20)
    {
        return a + b;
    };

    printf("%d\n", num1);

    return 0;
}
'''
#define xtest() cout<<x<<endl

int x=0;

inline void test(){
    cout<<x<<endl;
}

int main(void){
    int x=10;
    test();
    cout<<x<<endl;
    xtest();
    {
        int x = 20;
        test();
        cout<<x<<endl;
        xtest();
    }
    return 0;
}

我理解xtest(){cout << x << endl}行为相同,结果是正确的,但为什么test()行为不同?

c++ scope macros inline
1个回答
2
投票

标记为inline的函数仅以一种方式与非inline函数不同:它们可以在多个转换单元(=源文件)中定义,而不会导致一个定义规则违规(=链接器错误)。就这样。在所有其他方面,它们的行为与任何其他功能一样。它们与宏没有任何相似之处。

© www.soinside.com 2019 - 2024. All rights reserved.