facebook活跃用户数 活跃时间可以不让人知道吗

●●●●●●基础(24)
问题:p1.h和p2.h和拥有main的cpp中都用到了变量a,a在main的cpp中定义p1和p2用不到了,同样的在p1中定义p2用不到了……
解决方法:
//新建个头文件,这个写成全局的,这个只是声明,没有开辟空间
p1.h和p2.h和main所在cpp包换上面新建的头文件
在main里定义全局a
extern-----声明函数或者变量可以再其他模块用,理解为可以再其他.cpp和.h用
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:110436次
积分:2911
积分:2911
排名:第10903名
原创:181篇
评论:48条
(1)(2)(1)(1)(1)(5)(2)(1)(6)(2)(6)(1)(5)(3)(2)(22)(7)(13)(2)(4)(12)(12)(1)(1)(2)(10)(18)(20)(19)我们知道,在 C++(但不是在 C 语言)中,const 限定符对默认存储类型稍有影响。在默认情况下,全局变量的链接性为外部的,但 const 全局变量的链接性为内部的。也就是说,在 C++ 看来,全局 const 定义就像使用了 static 说明符一样。
&&& 因此,可以将 const 常量定义在头文件中供工程中的多个其它文件包含引用,并且编译时不会产生变量重复定义的错误。当然,也可以用 #define 宏定义。
&&& 一般常量定义并无问题,但是,如果 const 要限定的是指针就须特别注意。这里以字符数组为例来说明。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:475733次
积分:9333
积分:9333
排名:第1710名
原创:461篇
转载:34篇
评论:72条
(4)(2)(1)(1)(4)(1)(3)(1)(3)(4)(5)(7)(9)(5)(7)(4)(10)(14)(4)(11)(5)(18)(44)(22)(38)(28)(22)(35)(17)(13)(13)(23)(15)(66)(39)(2)C++头文件保护符和变量的声明定义
1、#ifndef #define #endif头文件保护符
在编译的过程中,每一个.cpp文件被看成一个单独的文件来编译成单独的编译单元,#ifndef 保证类的头文件在同一个.cpp文件中被多次引用后不会出现重定义问题。
注意:只是防止在同一个.cpp文件中被多次引用。
// file1.h
class file1
// file2.h
#include "file1.h"
class file2
// file3.h
#include "file1.h"
#include "file2.h"
file3.h展开来是这样的:
// file1.h展开的内容
class file1
// file2.h展开的内容
class file1
class file2
这时候就会出现重定义了,如果在每个文件加上#ifndef头文件保护符:
// file1.h
#ifndef _FILE1_H_
#define _FILE1_H_
class file1
#endif // !_FILE1_H_
// file2.h
#ifndef _FILE2_H_
#define _FILE2_H_
#include "file1.h"
class file2
#endif // !_FILE2_H_
// file3.h
#ifndef _FILE3_H_
#define _FILE3_H_
#include "file1.h"
#include "file2.h"
#endif // !_FILE3_H_
这时候展开file3.h时,因为_FILE1_H_只会被定义一次,所以就不会出现重定义错误。
2、变量的声明和定义
定义:用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。
声明:用于向程序表明变量的类型和名字。在一个程序中,声明可以有多个。定义也是声明:当定义变量时我们声明了它的类型和名字。可以通过使用extern关键字声明变量名而不定义它:。
// file1.h
#ifndef _FILE1_H_
#define _FILE1_H_
int a = 1;
#endif // !_FILE1_H_
// file2.h
#ifndef _FILE2_H_
#define _FILE2_H_
#include "file1.h"
#endif // !_FILE2_H_
// main.cpp
int main()
std::cout << a << std::
system("pause");
这时候编译会报错,因为在file1.h定义了a,在file2.h的展开中又定义了a。
有人会问,#ifndef不是防止重定义的吗?#ifndef是防止在同一个文件的重定义,在上面的情况,file1.h和file2.h是两个不同的文件,所以会在file1.h和file2.h同时出现int a = 1,就出现重定义错误了。
所以不要在头文件定义变量,最好的做法是:在头文件声明变量,在.cpp定义变量,在需要使用该变量的地方先声明再使用。
修改下上面的例子:
// file1.h
#ifndef _FILE1_H_
#define _FILE1_H_
#endif // !_FILE1_H_
// file1.cpp
#include "file1.h"
int a = 1;
// file2.h
#ifndef _FILE2_H_
#define _FILE2_H_
#include "file1.h"
#endif // !_FILE2_H_
main.cpp不变,这时候就可以正常运行了。}

我要回帖

更多关于 facebook活跃用户数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信