包含开关的功能在C 中不扩展内联

function containing switch are not extended inline in c++

本文关键字:扩展 开关 功能 包含      更新时间:2023-10-16

我尝试使用Switch语句在C 中编译程序,但我收到了一条警告消息

"包含开关的功能不扩展内联"

,我的程序给出了正确的输出,但我想知道此警告消息的含义是什么。

将需要更多的输入来回答您的问题。(也许您的代码段将有助于更好地理解事物)

您是否在代码中包含开关情况的函数中明确使用内联关键字?好吧,如果您有(我想您有),那么,只想说,编译器可以忽略将功能视为内联的请求。在很少情况下,编译器可以忽略内联函数,它们如下:

  • 包含循环的功能。(对于,do-wile)
  • 功能包含静态变量。
  • 递归功能
  • 包含 switch
  • 的功能
  • 包含goto语句的功能。

上面是我暂时可以回忆的几个条件。

虽然标准不需要这是函数指针数组,但开关参数为键。如果函数被内衬,则您需要在每个位置单独的此数组的副本,因为功能指针可能会有所不同。这是非常低效的(关于记忆和速度,由于高速缓存的工作方式),这是编译器可能决定不嵌入式的。(聪明的体系结构上的聪明编译器可能会使用该数组中的程序计数器相对地址,因此此行为是特定于编译器的。)