84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
代码如下 :
static const int NUM = 1000; const int ARRAY_LENGTH = 10;
想知道加不加 static 有什么区别吗 ?
static
如果我想将这个常量的使用范围限制在只在该文件中使用, 除了放在类中, 还有什么别的办法吗?
学习是最好的投资!
一个全局变量如果被static修饰,那么其只在本文件中可见,不能被其他文件使用
一口气回答你的两个问题~
static 全局变量,对于文件来说是 private 的,不加的话,其他文件也可以引用
加 static 就可以了
1.写在函数外就是在当前源文件(确切说是编译生成的.o目标文件,因为可见性其实是链接器的概念)可见,是内部链接。不写的话,就是外部链接,是可以在别的源文件里用extern引用的这个变量的。a.cpp
static const int A = 0; const int B = 0;
b.cpp
extern const int A; // 会发生链接错误 extern const int B; // 正确,多数是写在a.h里然后include
写在函数里则是说明是静态变量,多次调用这个函数,都共用同一个内存,而不是栈里产生新的。
void foo() { static const int A = 0; // 多次调用foo,&A不变。 const int B = 0; // 多次调用foo,&B不固定。 }
2.有方法,对于C++推荐用匿名空间代替static,让变量处于本文件内可见。
namespace { const int MAX_BUFFER_SIZE=200; }
一个全局变量如果被
static
修饰,那么其只在本文件中可见,不能被其他文件使用一口气回答你的两个问题~
static 全局变量,对于文件来说是 private 的,不加的话,其他文件也可以引用
加 static 就可以了
1.写在函数外就是在当前源文件(确切说是编译生成的.o目标文件,因为可见性其实是链接器的概念)可见,是内部链接。不写的话,就是外部链接,是可以在别的源文件里用extern引用的这个变量的。
a.cpp
b.cpp
写在函数里则是说明是静态变量,多次调用这个函数,都共用同一个内存,而不是栈里产生新的。
2.有方法,对于C++推荐用匿名空间代替static,让变量处于本文件内可见。