C++中odr怎么用
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章主要介绍了C++中odr怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。// The main module. File:
千家信息网最后更新 2025年11月14日C++中odr怎么用
这篇文章主要介绍了C++中odr怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
// The main module. File: odr_test1.cpp #includevoid module1_print(); // declaration of an exeternal function inline int f1(){ return 4;} class A{public: static double f() { return 4.1; }}; const double C = 4.2; constexpr double E = 4.5; void print(){ std::cout << "main f1(): " << f1() << std::endl; std::cout << "main A::f(): " << A::f() << std::endl; std::cout << "main C: " << C << std::endl; std::cout << "main E: " << E << std::endl;} int main(){ module1_print(); print(); int i; std::cin >> i; }
// File: module1.cpp #includeinline int f1(){ return 3;} class A{public: static double f() { return 3.1; }}; const double C = 3.2; constexpr double E = 3.5; void module1_print(){ std::cout << "module1 f1(): " << f1() << std::endl; std::cout << "module1 A::f(): " << A::f() << std::endl; std::cout << "module1 C: " << C << std::endl; std::cout << "module1 E: " << E << std::endl;}
1、在VS2017上运行的结果为:
2、使用clang进行编译
clang++ module1.cpp odr_test1.cpp
运行结果:

若进行下面的编译:
clang++ odr_test1.cpp module1.cpp
则结果如下
3、使用gcc编译
g++ module1.cpp odr_test1.cpp -std=c++11

若进行如下编译
g++ odr_test1.cpp module1.cpp -std=c++11
二、如何解决这个问题
// The main module. File: odr_test2.cpp#includevoid module2_print(); // declaration of an external function namespace{inline int f1(){return 4;} class A{public:static double f(){return 4.1;}};} const double C = 4.2;constexpr double E = 4.5; void print(){std::cout << "main f1(): " << f1() << std::endl;std::cout << "main A::f(): " << A::f() << std::endl;std::cout << "main C: " << C << std::endl;std::cout << "main E: " << E << std::endl;} int main(){module2_print();print(); int i;std::cin >> i;}
// File: module2.cpp #includenamespace{inline int f1(){return 3;} class A{public:static double f(){return 3.1;}};} const double C = 3.2;constexpr double E = 3.5; void module2_print(){std::cout << "module2 f1(): " << f1() << std::endl;std::cout << "module2 A::f(): " << A::f() << std::endl;std::cout << "module2 C: " << C << std::endl;std::cout << "module2 E: " << E << std::endl;}
运行结果
感谢你能够认真阅读完这篇文章,希望小编分享的"C++中odr怎么用"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
篇文章
结果
编译
运行
C++
价值
兴趣
同时
更多
朋友
知识
编带
行业
资讯
资讯频道
问题
面的
频道
参考
学习
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
珠海软件开发工资有多少
中国移动手机服务器密码
第三版计算机网络技术及应用答案
常见软件开发调试
东莞财务进销存软件开发
服务器安全策略管理
计算机里的生产系统数据库是什么
学习网络安全工程师好不好学
电信网络技术支撑职责
闵行区高清视频系统服务器
湖南郴州电脑软件开发学费多少
tplink打印服务器固件
大学生如何开展网络安全
分秒网络安全
小米服务器故障
江苏在线网络技术咨询口碑推荐
网络安全架构ppt
软件开发热门研究
思科网络技术学院登录不了
崇明区企业软件开发服务优势
网警检查电力局网络安全
全面解读网络安全法
数据库输入数据时超出索引
网络安全书到期
linux 服务器命令
app对接平台数据库
数据库限制查询结果的关键字
hp服务器售后服务热线
跟软件开发方合伙
网络安全内防内控 策略