static const vs. extern const

在实现文件(.m文件)中使用static const来定义“只在编译单元内可见的常量”(只在.m文件内可见),由于此类常量不在全局符号表中,所以无须为其名称加类名前缀(一般以k开头)。

在头文件中使用extern来声明全局常量,并在相关实现文件中定义其值,这种常量会出现在全局符号表中,所以其名称应以类名作前缀,以避免冲突。

参考:http://stackoverflow.com/questions/23652665/static-const-vs-extern-const

时间: 2024-10-11 23:45:53

static const vs. extern const的相关文章

static extern const修饰符

const const修饰的东西不能被修改(由左至右解读-->顺时针螺旋法则) 指针类型根据位置的不同可以理解成3种情况: 1.常量指针 NSString * const pt1; //常量指针,指向一个字符串 //pt1初始化之后不能赋值,指向的对象值可以修改. //定义字符串常量 //NSString* const [email protected]"123"; @"123"存储在文字常量区,相同的字符串只存储一份 NSString* [email pro

objectiveC【语法】修饰符 static extern const

转自http://blog.csdn.net/xpwang168/article/details/8087143 const const最好理解,修饰的东西不能被修改 指针类型根据位置的不同可以理解成3种情况: I 常量指针 // 初始化之后不能赋值,指向的对象可以是任意对象,对象可变. NSString * const pt1; II 指向常量的指针 // 初始化之后可以赋值,即指向别的常量,指针本身的值可以修改,指向的值不能修改 const NSString * pt2; III 指向常量的

static extern const

static 1.局部变量 // 该变量生命周期不仅仅是进入该函数后,而是整个程序运行期间 void foo() { static int nVar = 0; printf("var = %d\n", ++nVar); } 2.保护本地变量 static int g_nVar; // g_nVar只能在本文件中使用,其他文件不能通过extern访问该变量 3.静态成员变量 // 该变量不属于对象,而属于这个类 class Foo { public: static int nCount;

C++ 关键字 static register const volatile extern

C++ 关键字static,register,const,volatile,extern static 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为 0,使用时可改变其值. 静态变量或静态函数,只有本文件内的代码才可访问它,它的名字(变量名或函数名) 在其他文件中不可见. 在函数体内生成的静态变量,它的值能够一直维持. 在C++类的成员变量被声明为static(称为静态成员变量),意味着它为该类的所有实例所 共享,也就是说当某个类的实例修改了该静态成员变量,其修

C语言中关键字auto、static、register、const、volatile、extern的作用

原文:C语言中关键字auto.static.register.const.volatile.extern的作用 关键字auto.static.register.const.volatile.extern 这些关键词都是c++基础知识,我整理了一下,希望对新学的朋友们有用: (1)auto 这个这个关键字用于声明变量的生存期为自动,即将不在任何类.结构.枚举.联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量.这个关键字不怎么多写,因为所有的变量默认就是auto的. (2)reg

const 和 extern 用法小結

 雖說不難,但很重要!! 1.       const常量,如const int max = 100;  优点:const常量有数据类型,而宏常量没有数据类型.编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误(边际效应) 2.       const 修饰类的数据成员.如:class A { const int size; … } const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的.因为类可以创建多个对象,

c与c++中的extern const的区别和联系

最近复习c++,发现了这个东西. c语言里面,我们在一个.c文件中用const定义了一个全局变量后,可以在另一个.c文件中用extern const来引用,但在c++中在链接的时候会报undefined reference错误,这是因为在c语言里面,const全局变量在符号表里面是GLOBAL即全局可见的,而在c++里面却是LOCAL即只能在当前编译模块可见. e.g. 在a.h中: 1 extern const int a; 在a.c中: 1 const int a = 10; 在main.c

php中$this、static、final、const、self 等几个关键字的用法

$this,static,final,const,self这几个关键字使用方法. $this $this表示当前实例,在类的内部方法访问未声明为const及static的属性时,使用$this->value='phpernote';的形式.常见用法如: $this->属性 $this->方法 举例如下: <?php class MyClass{ private $name; public function __construct($name){ $this->name=$na

const char*, char const*, char*const的区别

Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读. char * const cp; ( * 读成 pointer to ) cp is a const pointer to char const char * p; p is a pointer to const char; char const * p; 同上因为C++里面没有const*的运算符,所以const只能属于前面的类型. C++标准规定,const关键字放在