static 和 inline

static

static 的变量,如果没有指定初始化的值,那么就会初始化为0,无论有没有指定初始化值,都只会初始化一次!

static 生命周期和全局变量一样

inline 内联函数

可能会将 函数的参数不进行出入栈操作 而是直接 在调用的地方 进行编译运算

但是现在编译器会更具自己的判断 进行是否需要内联 不再需要我们手动设置(仅对编译器起建议作用)

从编译器角度理解定义和声明

编译器在读代码时 是 从上往下解析的,从第一行第一个字开始读

编译器在确定一个函数时 最重要的是通过 参数 和 返回值来 确定一个函数

可以让 编译器 通过 声明 来 定位到 函数的定义(函数的具体实现) 进行编译

定义只能有一次,声明不限制,定义和声明不止能作用到函数,变量同样适用。

extern int fun(int a,int b); //声明!
extern int a;//变量 要显示的增加 extern  关键字

头文件和源文件

模块化编程

头文件不会主动编译,只有在被调用时才会编译(include)

#pragma once 防止 一个源文件里多次 调用

或者

#ifndef _HEADNAME_ //如果没有定义则往下走
#define _HEADNAME_



#endif//!_HEADNAME_

extern

实现c++调用c函数

extern "C" int fun();//声明为c风格的函数

extern "c"{
    int fun1();
    int fun2();

}

extern "C"{
    #include 头文件
}

SDK