包含开关的功能在C 中不扩展内联
function containing switch are not extended inline in c++
我尝试使用Switch语句在C 中编译程序,但我收到了一条警告消息
"包含开关的功能不扩展内联"
,我的程序给出了正确的输出,但我想知道此警告消息的含义是什么。
将需要更多的输入来回答您的问题。(也许您的代码段将有助于更好地理解事物)
您是否在代码中包含开关情况的函数中明确使用内联关键字?好吧,如果您有(我想您有),那么,只想说,编译器可以忽略将功能视为内联的请求。在很少情况下,编译器可以忽略内联函数,它们如下:
- 包含循环的功能。(对于,do-wile)
- 功能包含静态变量。
- 递归功能
- 包含 switch 的功能
- 包含goto语句的功能。
上面是我暂时可以回忆的几个条件。
虽然标准不需要这是函数指针数组,但开关参数为键。如果函数被内衬,则您需要在每个位置单独的此数组的副本,因为功能指针可能会有所不同。这是非常低效的(关于记忆和速度,由于高速缓存的工作方式),这是编译器可能决定不嵌入式的。(聪明的体系结构上的聪明编译器可能会使用该数组中的程序计数器相对地址,因此此行为是特定于编译器的。)
相关文章:
- 既然存在危险,为什么项目要使用-I include开关
- 是否可以通过C++扩展强制多个python进程共享同一内存
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 扩展光电二极管探测器以支持多个传感器
- 为什么这个音频包络不能通过开关的情况?
- 有人知道为什么在开关中使用stoi函数会返回恒定的错误吗
- C++中的VLA,扩展名为std=C++11
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 基于范围的 for 循环:迭代使用一个元素扩展的向量
- C++返回 Numpy 数组的 Python 扩展模块
- 扩展可变参数模板中的变量名称
- C 和 C++ 中开关语句的案例标签的常量值,但显示不同的行为
- 在 c++ 中在开关情况下使用和不使用"break"时的不同输出
- 扩展C++生成的代码的模板参数类型名称
- 为什么我的开关/机箱在使用枚举时默认?
- 我想通过带有C++和Python的插件创建一个可扩展的应用程序
- VSCode IntelliSense无法识别SDL框架的SDL_image扩展库
- 将元组类型扩展为可变参数模板?
- 包含开关的功能在C 中不扩展内联