问题描述
我一直在测试C ++中的内联函数调用。
I have been testing inline function calls in C++.
Thread model: win32
gcc version 4.3.3 (4.3.3-tdm-1 mingw32)
在C ++编程语言中的Stroustrup wirtes:
Stroustrup in The C++ Programming language wirtes:
但是,我发现生成的代码不是内联的。对于 isquare 函数有一个 CALL 字符。
However, I have found out that the generated code is simply not inline. There is a CALL instrction for the isquare function.
为什么会发生?
Why is this happening? How can I use inline functions then?
编辑:使用的命令行选项:
**** Build of configuration Debug for project InlineCpp ****
**** Internal Builder is used for build ****
g++ -O0 -g3 -Wall -c -fmessage-length=0 -osrc\InlineCpp.o ..\src\InlineCpp.cpp
g++ -oInlineCpp.exe src\InlineCpp.o
推荐答案
没有通用的C ++方法FORCE编译器创建内联函数。注意你引用的文本中的'提示'一词 - 编译器没有义务听你的。
There is no generic C++ way to FORCE the compiler to create inline functions. Note the word 'hint' in the text you quoted - the compiler is not obliged to listen to you.
如果你真的,绝对要做一些内联,您将需要一个特定于编译器的关键字,或者您需要使用宏而不是函数。
If you really, absolutely have to make something be in-line, you'll need a compiler specific keyword, OR you'll need to use macros instead of functions.
编辑:njsf在他的回应中提供了正确的gcc关键字。
njsf gives the proper gcc keyword in his response.
这篇关于C ++内联函数使用GCC - 为什么CALL?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!