gpt4 book ai didi

c++ - 内联命名空间函数时出错

转载 作者:搜寻专家 更新时间:2023-10-31 02:18:25 27 4
gpt4 key购买 nike

我想确保我的其中一个函数在使用时是内联的,但由于某种原因,我遇到了我无法理解的错误。我快速设置了一个测试环境来重现我的错误。在这里:

主要.cpp:

#include "ns1.h"
#include <iostream>

int main()
{
if (Test::GiveMeCookies(false)){
std::cout << "Here it is!\n";
} else {
std::cout << "You were a bad boy!\n";
}

return 0;
}

ns1.cpp:

#include "ns1.h"

__forceinline bool Test::GiveMeCookies(bool why)
{
return !why;
}

ns1.h:

#pragma once

namespace Test
{
__forceinline bool GiveMeCookies(bool why);
}

我得到的错误信息是:

1>main.obj : error LNK2019: unresolved external symbol "bool __cdecl Test::GiveMeCookies(bool)" (?GiveMeCookies@Test@@YA_N_N@Z) referenced in function _main

1>C:\Users\Unknown User\Desktop\NamespaceTest\Debug\NamespaceTest.exe : fatal error LNK1120: 1 unresolved externals

谁能解释一下为什么我不能从我的命名空间内联函数?我如何解决这个问题,同时保持我必须强制内联它。

最佳答案

您收到的错误与 forceinline 无关。在 ns1.cpp 中,您的函数不在 Test 命名空间中。

应该是这样的:

#include "ns1.h"
namespace Test
{
__forceinline bool GiveMeCookies(bool why)
{
return !why;
}
}

关于c++ - 内联命名空间函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34521106/

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