导航:首页 > 源码编译 > 编译器中定义过程变量

编译器中定义过程变量

发布时间:2023-06-04 15:53:08

Ⅰ C++中如何定义变量

简单说:你要定义一个整形变量就是直接“类型 变量名;”就行。例如定一个叫做a的整形变量
“int a;”
详细说明:
在C++中,变量声明(declaration)只有在使用extern关键字时才成立,其他情况下都是定义(definition),而在使用extern的同时给变量赋初始值,则声明变为定义,extern关键字也将被编译器忽略。C++变量的作用域缺省情况下是全局的,也就是对多个源文件可见,比如说,如果在a.cpp和b.cpp中都有
int a;
则编译器链接两个文件时会报告错误,“变量重复定义”。因此,要使变量定义只对该源文件可见,就要显式加上static关键字。因此,我们可以想到,如果在a.cpp中有
extern int a;
而在b.cpp中有
static int a = 9;
那么,编译器链接时会给出错误信息,“找不到a的定义”,因为a的定义在b.cpp并只对该文件可见,a.cpp找不到a的定义因此出错。
变量的声明和定义是比较容易混淆的概念,因此记住一点,除非有extern关键字,否则都是变量的定义。由此,我们可以归纳出几点好的程序设计风格:
1. 不要把变量定义放入.h文件,这样容易导致重复定义错误。
2. 尽量使用static关键字把变量定义限制于该源文件作用域内,除非该变量被设计成全局的。
例外情况是const变量和typedef类型,在《The C++ Programming Language》9.2节中说到,const和typedef缺省作用域是局部的,因此不需要static来显式声明。因此,在.h文件中放置const变量定义不会产生问题,编译器会给每个引用该.h文件的源文件产生一份该const变量的局部定义,就像该变量是定义于该源文件中一样。大家也不用太担心编译器这么做会浪费空间,因为编译器优化过程一般会把有相同值的const变量进行合并。
对于static关键字,要多说几句的是,static一般有两种意思,当修饰函数定义里的变量或者类成员变量时,称作静态变量;修饰其他变量时,称作局部变量。为防止混淆,一般不要特意给局部变量加上static关键字。除了static关键字,namespace也可以使变量定义成为局部的。

Ⅱ 问一下各位,c语言编译器是如何处理变量名的呢

编译器编译到int a;时就在内存中开辟一个两字节的内存空间,并且命名为a

Ⅲ C语言中如何定义全局变量

1、首先,我们可以在函数外面定义变量,就是全局变量。

阅读全文

与编译器中定义过程变量相关的资料

热点内容
程序员老公要加班 浏览:961
51单片机控制的超声波 浏览:827
2021去水印最新源码 浏览:232
ug编程刀具号重复 浏览:959
空当接龙算法 浏览:609
可压缩流体非恒定二维流动 浏览:695
天龙八部网单没有找到技能文件夹 浏览:861
android串口程序 浏览:833
上海机器人程序员 浏览:914
两台阿里云服务器如何拷贝 浏览:170
阿里妈妈淘宝联盟需要什么app 浏览:368
什么人可以做编程员 浏览:358
网盘会员加速是在线解压嘛 浏览:109
单片机按键汇编程序 浏览:728
传播学纲要pdf第二版 浏览:385
乐友进销存有什么app 浏览:554
显示器维修pdf 浏览:618
qq支付时怎么双层加密 浏览:943
2008服务器如何做安全 浏览:310
戴尔系统加密怎么解密 浏览:469