gpt4 book ai didi

c++ - 内联调用不太可能失败,代码大小会增加 [-Winline] 但不使用内联

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:35:35 26 4
gpt4 key购买 nike

对 C++ 很陌生。

这是我的用户定义的 fmiNode 类:(fmi.h)

class fmiNode
{
public:
fmiNode(std::string NodeName,int Address)
{
this->name = NodeName;
this->address = Address;
}

std::string GetName()
{
return this->name;
}

int GetAddress()
{
return this->address;
}

private:
std::string name;
int address;
};

这是我的主要方法(fmi.c)

int main (int argc, char *argv[])
{
fmiNode node1("NodeA",4);
fmiNode node2("NodeB",6);
fmiNode node3("NodeC",8);
fmiNode node4("NodeD",10);

while(1)
{
MainLoop();
}
}

如果我只实例化一个 fmiNode 对象,一切都很好。但以下 3 个会引发警告:

 warning: inlining failed in call to ‘fmiNode::fmiNode(std::string, int)’: call is unlikely and code size would grow [-Winline]

我在这里做错了什么。

编辑:

所以我应该这样定义我的类:?

class fmiNode
{
public:
fmiNode(std::string NodeName,int Address);

std::string GetName()
{
return this->name;
}

int GetAddress()
{
return this->address;
}

private:
std::string name;
int address;
};

fmiNode::fmiNode(std::string NodeName,int Address)
{
this->name = NodeName;
this->address = Address;
}

干杯,里斯

最佳答案

如果您在类定义中定义一个函数(在您的情况下为构造函数),结果与在类外部使用 inline 关键字定义它的结果相同,按照 c++ 标准:

7.1.2.3 A function defined within a class definition is an inline function

所以编译器得到了 inline 提示,但是由于警告消息中的原因,认为将构造函数内联到 main 中是一个坏主意,所以它给了你警告。

更新:是的,您应该在EDIT 中定义类以避免此警告。更好的是,将定义放入 .cpp 文件以避免多个定义错误。

关于c++ - 内联调用不太可能失败,代码大小会增加 [-Winline] 但不使用内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32736901/

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