inline函数使用容易导致出错的问题
对于inline函数,首先应该要短小(inline只是对编译器的一个建议,编译器是可以忽略的),其次inline函数的定义一定要与调用它的部分在同一个源文件里,不同的源文件可以分别定义一个相同inline函数,内容都可以不同(不违反重复定义原则),但是这样做会引起程序调用的不确定性,应该避免这种情况。为此,可采用将inline函数放在另外一个单独的文件里,那个文件需要用就调用这个文件。
我再dev C++里做了一个测试:
新建一个空工程pj1,里面有两个文件1. cpp,2.cpp
其中1.cpp
inline int min(int a, int b)
{
return a;
}
int Get1(int a, int b)
{
return min(a, b);
}
2.cpp
# include<iostream>
using namespace std;
inline int min(int a, int b)
{
return b;
}
int Get2(int a, int b)
{
return min(a, b);
}
int Get1(int, int);
int main(int argc, char *argv)
{
cout << Get1(3, 4) << endl;
cout << Get2(3, 4) << endl;
char p;
cin >> p;
return 0;
}
结果程序跑出来得结果是:
3
3
很明显程序只调用了1.cpp中的min(),由此引起了问题(没有调用2.cpp中的min()。
inline函数使用容易导致出错的问题相关推荐
- inline函数的用法
在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间或是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数. 栈空间就是指放置程式的局部数据也就是函数内数据的内存空间,在系统下,栈空 ...
- inline函数在IAR中的使用
1.什么叫inline函数 inline其实是是C++关键字(但是IAR支持),在函数声明或定义中,函数返回类型前加上关键字inline,即可以把函数指定为内联函数.这样可以解决一些频繁调用的函数大量 ...
- inline函数用法详解
inline函数定义 内联函数的编程风格 慎用内联 inline 和 预处理的区别 参考资料 inline函数定义 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联. i ...
- inline函数在keil MDK中用法
一.什么是内联函数 在C语言中,如果一些函数被频繁调用,不断地有函数入栈,即函数栈,会造成栈空间或栈内存的大量消耗. 为了解决这个问题,特别的引入了inline修饰符,表示为内联函数. 栈空间就是指放 ...
- 关于inline函数
(一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联. inline int min(int first, int ...
- C++ inline函数和宏
1. 内联函数 在C++中我们通常定义以下函数来求两个整数的最大值: int max(int a, int b) {return a > b ? a : b; } 为这么一个小的操作定义一个函数 ...
- C++ 函数模板特化导致的多重定义链接错误
转载请注明文章:C++ 函数模板特化导致的多重定义链接错误 出处:多客博图 标题说的可能不是很清楚,解释一下,函数模板,一般都是放在头文件里面,所以有些时候,我也会做一个特化,也放在这个头文件里面,当 ...
- 【转】 嵌入式C语言编程中Inline函数的应用
源地址:https://blog.csdn.net/vigour1000/article/details/9622037 有一段儿时间没写写经验笔记了,哎,也是自己这一段时间以来(其实最近一直是这个状 ...
- C++ inline 函数简介
1.inline 函数简介 inline 函数由 inline 关键字定义,引入 inline 函数的主要原因是用它替代 C 中复杂易错不易维护的宏函数. 2.编译器对 inline 函数的处理办法 ...
最新文章
- .Net读取XP文件夹中的Thumbs.db文件
- JSP页面的执行过程
- 住宅区和住宅建筑内光纤到户通信设施工程设计规范_山西开展综合布线系统工程设计 验收规范专题培训...
- 数学无用论??我们欠孩子真正的数学阅读
- Codeforces Round #381 (Div. 1) A. Alyona and mex 构造
- 阿里大规模数据中心性能分析
- 80%的前端程序员都遇到的问题,你中招了吗?
- 内联函数与宏定义的区别
- 如何控制局域网网速_免费局域网监控软件如何提升控制性能 - 百科
- 恭喜你!看到了这篇靠谱的12款CAM软件测评(下篇)
- Java学习笔记(五):Java多线程(细致入微,持续更新)
- cesium中实现热力图
- linux下c++程序崩溃,如何处理core dump
- 校园商铺项目 SSM迭代Spring Boot项目实战视频
- 高考加油的c语言程序,2020祝高三高考加油的句子 高考加油一句话
- Hadoop HA集群配置问题记录
- 简易凯撒密码实现,很容易
- 关于机器指令和微指令
- 谷歌SEO排名受哪些因素的影响?(一)
- JavaScript Set