天天看点

ca64a_c++_内联函数inline

//头文件中:

/*ca64a_c++_内联函数

内联函数避免函数调用的开销
把内联函数放入头文件中,直接定义,不用声明。与普通函数不一样,普通函数定义写在源文件中。


注意:
内联说明对于编译器来说只是一个建议,编译器可以选择忽略这个建议,对于短小的函数,会展开。
递归函数、大函数不太可能在调用点内联展开,所以一般不用inline

带有inline的函数:内联函数,加快速度。在编译的时候就展开:
比如:inline int sum(int a, int b) 已经是内联函数
编译后:在main函数调用时。
cout << sum(x[i], y[i]) << endl;此语句编译后:实际就没有调用sum函数。
直接执行的是:cout << x[i]+y[i] << endl;
txwtech

*/
#include <iostream>
#include <string>
#include "ca64a.h"
using namespace std;
//带有inline的函数:内联函数,加快速度。在编译的时候就展开:
//比如:inline int sum(int a, int b) 已经是内联函数
//inline int sum(int a, int b)//对于短小的函数,会展开。
//{
//	return a + b;
//}
//inline const string &shortString(const string &s1,const string &s2)
//{
//	return s1.size() < s2.size() ? s1 : s2;
//}
//inline bool isShorter(const string &s1, const string &s2)
//{
//	return s1.size() < s2.size();
//}
int main()
{
	int x[] = { 1,2,3,4,5,6,7,8,9 };
	int y[] = { 1,2,3,4,5,6,7,8,9 };
	for (int i = 0; i < 9; ++i)
		cout << sum(x[i], y[i]) << endl;

	cout << shortString("hello","bill");
	return 0;
}
           
//头文件中ca64a.h:
/*
#pragma once //表示在编译的时候, 这个文件只被包含(include)一次,这样, 可以减少整个编译过程中打开这个文件的次数.
与如下效果一样:头文件保护,防止重复包含
#ifndef ca64a_H
#define ca64a_H
.....
#endif
头文件中不要用 using namespace std,<iostream>;
字符串直接用std::string方式
*/


#include <string>

#ifndef  CA64A_H //头文件保护,防止重复包含
#define CA64A_H

inline int sum(int a, int b)//对于短小的函数,会展开。
{
	return a + b;
}
inline const std::string &shortString(const std::string &s1, const std::string &s2)
{
	return s1.size() < s2.size() ? s1 : s2;
}
inline bool isShorter(const std::string &s1, const std::string &s2)
{
	return s1.size() < s2.size();
}


#endif // ! CA64A_H
           

继续阅读