千家信息网

C++中odr怎么用

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍了C++中odr怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。// The main module. File:
千家信息网最后更新 2026年11月04日C++中odr怎么用

这篇文章主要介绍了C++中odr怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

// The main module. File: odr_test1.cpp  #include  void 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 #include  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 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#include void 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 #include  namespace{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安全错误 数据库的锁怎样保障安全 手磨咖啡 互联网科技未来 上海挚品互联网科技 杭州互联网科技公司 互联网 科技服务平台 重庆科技学院互联网 富国互联网科技创新基金 互联网科技项目计划书材料类 青岛科技大学互联网大赛研究生 成都互联网科技公司工作好不好 互联网科技扶贫时间 河南住房之家互联网科技 洛阳共同富裕互联网科技有限公司 滨湖区互联网智能科技产品有哪些 黑科技 体验场景 互联网大会 保山互联网科技靠谱吗 互联网时代高科技布局 科技互联网专业工作会议发言稿 长沙易易互联网科技有限公司 如何强化互联网金融科技 互联网科技股票 广州紫鲸互联网科技 恒生科技互联网指数分析 互联网实体化科技化 恒银科技与互联网金融 智腾互联网科技有限公司 江阴互联网智能科技产品进口 烟台灵鸽互联网科技有限公司 科技信息时代互联网发展 黑龙江互联网科技公司
0