ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 一.内置函数 1. 介绍 + 编译器将内置函数的调用处理成编译前的 **代码替换** ,而不是普通函数在编译时的 **控制转移** ,从而提高了效率。 + 内置函数只是建议性的,不是指令性的,编译器会根据具体情况决定是否采纳该建议。 2. 用 `inline` 关键字指定内置函数 可以在声明函数和定义函数时同时写inline,也可以只在其中一处写inline。 ```c++ #include <iostream> using namespace std; inline int max(int a, int b) { if(a > b) return a; else return b; } int main() { int x = 233,y = 666,z; z = max(x,y); //上面一行在编译前会被替换成 //if(x > y) z = x; //else z = y; cout<<z<<endl; return 0; } ``` 3. 内置函数的函数体限制 + 内置函数中,不能含有复杂的结构控制语句,如switch,while。 + 内置函数不能是递归函数。 + 内置函数只适合于只有1~5行的小函数。 ## \[11+\][$]二.constexpr 函数 1. **概念** 能用于常量表达式的函数 2. **定义规则** + 返回值和形参类型都必须是字面值类型 + 函数体必须有且仅有一条 `return` 语句。 3. 执行该初始化任务时,编译器把对constexpr函数的调用替换成其结果值。为了能在编译过程中随时展开,constexpr 函数被隐式地指定为内联函数。 ```c++ constexpr int new_sz(constexpr int a) { return a; } ```