声明与定义的区别

声明与定义的都是作用于编译器

声明

比如:extern  int a 声明一个变量。 extern “c++”  按照c++的方式编译

                                                         extern“c”按照c的方式编译                 // 告诉函数是以什么方式编译的。

声明就是指给除了当前变量或者函数,或者类什么的名字,不给其中的内容,就是先告诉你有这样一个什么类型的变量或者函数,但是这个变量或者函数的具体信息却是不知道的。就好比跟你介绍一个人的时候,声明就是只告诉你这个人叫什么,但是缺不给你说这个人到底怎么样,他有哪些优点,缺点,喜好问题是什么的。也就是不给开辟空间。

定义是对声明的实现或者实例化。定义操作只能是一次的,如果你定义变量超过一次,连接器是不知道把引用和哪块内存连接,然后就会报 duplicated symbols这样的错误了。以上的symbols其实就是指定义后的变量名,也就是其标识的内存块。

首先用宏来举个例子。

例:

//    #define 0(假)//1() 真      可以不用  

#if   MY(默认为假)

#define MAX 100

#else

#define  MAX 10

#endif

void mmain()

{

int a=MAX

 printf("%d\n",a)

}

定义“MY”若真输出100,若假则执行“#define MAX 10”S输出10

上面的这个例子是对 宏定义的一点点理解。

定义直接告诉你了所有的东西,这个变量是什么,这个函数是什么功能,这个类里面包含了什么东西。很具体的说明。

  • 当然一般对于变量来说,我们不怎么区分声明或者定义之类的,一般没有人去说我要声明一个变量,然后定义这个变量什么的。要说都是直接说定义变量。

  • 声明一般都是对函数或者类来说的,声明在前,定义在后


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值