cpp(8) extern/ifndef/inline函数

来源:互联网 发布:个人简介网页制作源码 编辑:程序博客网 时间:2024/06/06 18:08

标签(空格分隔): cpp


声明和定义

声明:加关键字extern
定义只可以出现一次,而声明则可以出现多次。因为头文件包含在多个源文件中,所以不应该含有变量或函数
的定义。除了类、const对象(值已知)、inline函数

extern int ival = 10; // initializer, so it's a definitiondouble fica_rate; // no extern, so it's a definition

虽然 ival 声明为extern,但是它有初始化式,代表这条语句是一个定义。类似地,fica_rate的声明虽然没有初始化式,但也是一个定义,因为没有关键字 extern。同一个程序中有两个以上文件含有上述任一个定义都会导致多重定义链接错误。

避免多重包含

可以使用这些设施来预防多次包含同一头文件:

#ifndef SALESITEM_H#define SALESITEM_H// Definition of Sales_itemclass and related functions goes here#endif

inline

C++ 中有些函数可以声明为内联(inline)函
数。编译器遇到内联函数时就会直接扩展相应代码,而不是进行实际的函数调用。
调用函数比求解等价表达式要慢得多。在大多数的机器上,调用函数都要做很多工作;调用前要先保存寄存器,并在返回时恢复;复制实参;程序还必须转向一个新位置执行。

cout << shorterString(s1, s2) << endl;\\在编译时将展开为:cout << (s1.size() < s2.size() ? s1 : s2)<< endl;

将inline函数写入头文件