C/C++中define的使用

代码:

 1 #include <iostream>
 2
 3 using namespace std;
 4
 5 #define a 10
 6
 7 void foo();
 8 void bar();
 9
10 void foo(){
11     #undef a
12     #define a 50
13 }
14
15 int main(){
16
17     cout<<"main "<<a<<endl;
18     foo();
19     cout<<"main "<<a<<endl;
20     bar();
21     cout<<"main "<<a<<endl;
22
23     return 0;
24 }
25
26 void bar(){
27     #undef a
28     #define a 100
29     cout<<"bar "<<a<<endl;
30 }

输出:

main 50
main 50
bar 100
main 50

分析:

define在预处理时进行替换,且忽略代码逻辑,替换范围为当前位置之后。

时间: 2024-10-12 07:30:53

C/C++中define的使用的相关文章

C++中#define用法

http://blog.sina.com.cn/s/blog_686188ef0100klku.html #define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能 理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C语言的学习很不利.1 #define命令剖析1.1 #define的概念#define命令是C语言中

Linux编程中 #define _XOPEN_SOURCE的作用

[误解]#define _XOPEN_SOURCE决不是简单的宏定义它是使程序符合系统环境的不可缺少的部分 [概念]Glibc 所实现全部或部分规范下的功能有:1.ISO C: C语言国际标准. 2.POSIX: 操作系统的 ISO/IEC 9945 (aka IEEE 1003) 标准. 3.Berkeley Unix: BSD 和 SunOS. 4.SVID: V 系统接口描述. 5.XPG: The X/Open Portability Guide. 程序中,为了实现上述功能需要定义对应的

C/C++中define定义的常量与const常量

常量是在程序中不能更改的量,在C/C++中有两种方式定义常量,一种是利用define宏定义的方式,一种是C++中新提出来的const型常变量,下面主要讨论它们之间的相关问题: define定义的常量: define是预处理指令的一种,它用来定义宏,宏只是一个简单的替换,将宏变量所对应的值替换,如下面的代码: #define NUM 2 int main() { printf("%d", NUM); } 编译器在编译时处理的并不是这样的代码,编译器会首先处理预处理指令,根据预处理指令生成

java 仿c/c++ 中#define #ifdef 的功能做Debug(转载)

转载自:http://livehappy.iteye.com/blog/865277 C代码 #define DEBUG 调试完成后只需将这个define命令行删除即可.有人可能觉得不用条件编译也可达此目的,即在调试时加一批printf语句,调试后一一将printf语句删除去.的确,这是可以的.但是,当调试时加的printf语句比较多时,修改的工作量是很大的.用条件编译,则不必一一删改printf语句,只需删除前面的一条“#define DEBUG”命令即可,这时所有的用DEBUG作标识符的条件

【实战】verilog中`define的使用记录

背景: 在最近实战开发中发现:对外部芯片进行初始化时,往往需要定义大量参数. 若直接在module中通过localparam或者paramter进行参数定义的话,会带来两个问题: 1.代码长度增加,不够美观: 2.不利于参数和代码修改: 为了解决这两个问题,我想到了在之前在<verilog数字系统设计教程>(夏闻宇)看到过的`define宏定义+`inlude "file.v"文件包含来实现参数模块化设计的方式. 实战: 1.新建参数模块文件(我命名为para.v): 2.

c++中 #define和const的区别

来源参考:https://blog.csdn.net/yi_ming_he/article/details/70405364 这个区别用从几个角度来说: 角度1: 就定义常量说的话:  const 定义的常数是变量 也带类型, #define 定义的只是个常数 不带类型. 角度2: 就起作用的阶段而言: define是在编译的预处理阶段起作用,而const是在 编译.运行的时候起作用. 角度3: 就起作用的方式而言: define只是简单的字符串替换,没有类型检查.而const有对应的数据类型,

php中define和const异同点

常量是一个简单的标识符.在脚本执行期间该值不能改变(除了所谓的魔术常量,他们其实不是常量).常量默认大小写敏感.通常常量标识符总是大写的. 可以用define()函数来定义常量.在php5.3.0以后,可以使用const关键字在类定义的外部定义常量,先前版本const关键字只能在类(class)中使用.一个常量一旦被定义,就不能再改变或取消定义. 常量只能包含标量数据(boolean.integer.float和string).可以定义resource常量,但应尽量避免,因为会造成不可预料的结果

PHP中define()和dirname(__FILE__)

1,define() 函数定义一个常量.常量类似变量,不同之处在于: (1)在设定以后,常量的值无法更改 (2)常量名不需要开头的美元符号 ($) (3)作用域不影响对常量的访问 (4)常量值只能是字符串或数字 语法 define(name,value,case_insensitive) name,必需的,规定常量名称:value,必需的,规定常量值:case_insensitive,可选.规定常量的名称是否对大小写敏感.默认是 false(大小写敏感). 实例,定义一个大小写敏感的常量并输出

C++中#define,#ifdef和#endif的作用

今天发现一个好用的东西,自己在编写code时经常需要测试,但是每次呢测试的代码写了删删了写.很麻烦,运行也不美观.希望运行时不再显示之前测试好的代码,那边的测试代码就得全部注释或者删除再编译: 今天无意发现这个#define,#ifdef 和#endif 有这么个作用! 举例如下: /************************************************************************* > File Name: main.cpp > Author: