包含开关的函数在c++; 我尝试用C++语句编译C++程序,但是我得到了一条警告信息:
“包含开关的函数不是内联扩展的”包含开关的函数在c++; 我尝试用C++语句编译C++程序,但是我得到了一条警告信息:,c++,if-statement,switch-statement,C++,If Statement,Switch Statement,“包含开关的函数不是内联扩展的” ,我的程序给出了正确的输出,但我想知道此警告消息的含义。将需要更多输入来回答您的问题。(也许你的代码片段有助于更好地理解事情) 您是否在代码中为包含开关大小写的函数显式使用内联关键字?! 如果你有(我想你有),那么,我想说的是,编译器可以忽略将函数作为内联函数处理的请求。 编译器可能忽略内联函数的情况很少,如下所示: 包含循环的函数。(例如,while,do while) 函数包含静态变量 递归函数 包含开关的函数 包含goto语句的函数 以上是我目前能记起
,我的程序给出了正确的输出,但我想知道此警告消息的含义。将需要更多输入来回答您的问题。(也许你的代码片段有助于更好地理解事情) 您是否在代码中为包含开关大小写的函数显式使用内联关键字?! 如果你有(我想你有),那么,我想说的是,编译器可以忽略将函数作为内联函数处理的请求。 编译器可能忽略内联函数的情况很少,如下所示:
- 包含循环的函数。(例如,while,do while)
- 函数包含静态变量
- 递归函数
- 包含开关的函数
- 包含goto语句的函数
以上是我目前能记起的几个情况 虽然这不是标准所要求的,但开关通常被转换为函数指针数组,开关参数是键。如果函数已内联,则每个位置都需要该数组的单独副本,因为函数指针可能不同。这是非常低效的(由于缓存的工作方式,在内存和速度方面),编译器可能会决定不内联它。(智能体系结构上的智能编译器可能会在此数组中使用程序计数器相对地址,因此此行为是特定于编译器的。)请发布一个。查看