c++ - 内联函数选择标准
问题描述
我有以下内容:
//a.cpp
inline int f(int x) { return x; }
int g(int x) { return f(x); }
//b.cpp
#include <iostream>
inline int f(int x) { return x + 1; }
extern int g(int);
int main() {
std::cout << g(2) << f(2) << std::endl;
}
输出是22
(MSVC 和 GCC),也就是说,a.cpp
f
函数被内联而不是b.cpp
一个。f
在这种情况下选择功能的标准是什么?
解决方案
您的代码格式错误,无需诊断。所有翻译单元中的所有内联函数定义都必须相同。
由于您不这样做,因此代码格式错误,但允许编译并且不需要引起任何类型的警告或错误。
推荐阅读
- ruby-on-rails - 重命名资源的索引页面上的 Rails ActiveAdmin 路由问题
- c# - 如何为不同的客户创建不同的 DLL
- informatica - 无法在 Informatica 映射中捕获参数值
- kubernetes - kubernetes 服务是否有一种简单的方法可以为服务器端实现 oauth 2.0?
- php - 如何根据标记数字或逗号启动 PHP 循环
- elasticsearch - Elasticsearch 检查单词子集是否存在
- ios - 以 NSException Timer Swift Crash 类型的未捕获异常终止
- opalrb - require 'opal-jquery' 给出错误:找不到所需的文件
- java - 如何在更新jsp页面中的列表时将两个不同的模型属性映射到jsp中的一个表?
- maven - 如何以传递方式排除依赖项?