Lio*_*ior 71 c static constants
static const和之间有什么区别const?例如:
static const int a=5;
const int i=5;
Run Code Online (Sandbox Code Playgroud)
它们之间有什么区别吗?你什么时候用一个而不是另一个?
Joe*_*Joe 76
static确定函数外部的可见性或内部的变量寿命.因此它与const本身无关.
const意味着您在初始化之后不会更改该值.
函数内部的静态意味着变量将在函数结束之前和之后存在.
函数外部的静态意味着标记为static的符号的范围仅限于该.c文件,并且不能在其外部看到.
从技术上讲(如果你想查看),static是一个存储说明符,const是一个类型限定符.
oua*_*uah 51
不同之处在于联系.
// At file scope
static const int a=5; // internal linkage
const int i=5; // external linkage
Run Code Online (Sandbox Code Playgroud)
如果在i定义它的翻译单元之外没有使用该对象,则应使用说明static符声明它.
这使编译器(可能)执行进一步的优化,并通知读者该对象未在其翻译单元之外使用.