【发布时间】:2015-06-30 00:49:14
【问题描述】:
我相信,inline 已经过时了,因为我读过here:
无论你如何将函数指定为
inline,这是一个允许编译器忽略的请求:编译器可能内联扩展你调用指定为@的函数的部分、全部或任何地方987654330@.
但是,Angew 似乎理解了一些我不理解的东西。在this question他和我来回走了好久,关于inline是否还有用。
这个问题不是一个问题:
-
inline或inline的历史用途仍可用于向编译器提示inline函数:When should I write the keyword 'inline' for a function/method?。 - 内联函数代码的优缺点:Benefits of inline functions in C++?
- 强制编译器使用
inline功能代码:force inline function in other translation unit
记住编译器可以随意inline,所以inline在那里没有帮助:哪里可以用inline强制,不建议,改变在编译代码中?
【问题讨论】:
-
@MatthieuM。我在发帖之前看了一下:stackoverflow.com/questions/1759300/…,感觉这是一个关于
inline对内联代码影响的问题。我特别声明我确实不想想知道这件事。我想知道inlines 的替代用途。在我看来,这两个问题非常不同。 -
好吧,我个人发现你的问题是重复的;因为一旦你确定
inline对暗示内联毫无用处,那么就只剩下语义,这正是“我什么时候应该为函数/方法编写关键字'内联'?”大约。但是,由于您的问题被重新提出,显然其他人也有同样的想法。请注意,如果您查看了其他问题,建议您将其链接并解释您认为您的问题不同的原因。 -
由于问题标题与实际问题严重不匹配,我投了反对票。你问,“内联还有用吗?”,答案是“是的,因为 ODR”,你还问,“
inline在哪里可以用来强制改变编译代码?” ,答案是“无处可去,除非您使用一些专门的编译器选项”。然后你说实际上你一直都知道第一件事,真正的问题是第二件事。 -
@MatthieuM。我添加了一个关于我查看的一些问题的部分,以及我觉得这个问题的不同之处。感谢您的建设性批评,我希望它最终提出了一个更好的问题。
-
@JonathanMee:好的,如果“是的,因为 ODR”是一个可以接受的答案,那么这是您链接到的问题的欺骗,因为答案是“无论何时需要ODR”。提出以前已经解决的问题的方式的微小变化不会产生新问题,如果您要问的是,“由于该答案中给出的原因,我们是否仍然需要使用内联2009 年,与 ODR 有什么关系?”,然后,“这仍然是真的吗?” IMO 是骗子吗?
标签: c++ function methods inline deprecated