#define和#undefine的用法
#undef将保持已定义状态且在
作用域内,直到程序结束或者使用#undef 指令取消定义。
预处理器
在此程序中,我们将取消在先前程序中对预处理器的定义。
|
1 2 3 4 5 6 7 8 9 10 11 |
#include <iostream.h> #include<string.h> #define MAX 5 #undef MAX void main() { char name[MAX]="abcd"; //只能用abcd,否则会提示说超出长度,原因是由于"\0"字符 cout<<"MAX = "<<MAX<<endl; for(int i=0;i<MAX;i++) cout<<name<<" "<<endl; } |
得到如下错误消息:
未定义符号 'MAX'
初始值设定项太多
在此程序中对 MAX 定义后又取消了定义。编译该程序时报错。由于未定义 MAX,char name[MAX] 的数组大小不可用,因此编译器发出第二个错误消息。
宏定义
|
1 2 3 4 5 |
#define TEST_A 1 #define TEST_CLASS_A clase T1 #include "TEST.h" #undef TEST_A #undef TEST_CLASS_A |
在这一个文件中使用宏定义:
|
1 2 |
#undef TEST_A 1 #undef TEST_CLASS_A clase T1 |
在#include "TEST.h" 这个文件宏定义,释放掉,就是这个意思,也就是在文件#include "TEST.h" 中宏定义
|
1 |
#define TEST_A 1 |
#define TEST_CLASS_A clase T1 起作用,过了这一语句宏定义就释放掉了,在test.h里,这个宏是有效的,然后出了这个头文件,又无效了。
修改已经宏定义的符号常量的值:
|
1 2 3 4 5 6 7 8 9 10 |
#include <stdio.h> int main( void ) { #define MAX 200 printf("MAX= %d\n",MAX); #undef MAX #define MAX 300 printf("MAX= %d\n",MAX); return 0; } |
#define和#undefine的用法的更多相关文章
- ifndef/define/endif作用和用法
问题:ifndef/define/endif”主要目的是防止头文件的重复包含和编译,偶只知道这个概念不懂的是怎么个用法,和为什么要用它~~高手请指点一下~~谢谢~~~!!! ------------- ...
- const 与define 创建符号常量的 用法与区别
一.define 的用法: 在c语言中我经常会看到 :#define PI 12 ,这是创建了一个符号常量,这里面要注意没有那个等于号“=”: 二.const 的用法: 1.const 也可以来创 ...
- C++ ifndef /define/ endif 作用和用法
ifndef/define/endif”主要目的是防止头文件的重复包含和编译 比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是问题 ...
- ifndef /define/ endif 作用和用法
问题:ifndef/define/endif"主要目的是防止头文件的重复包含和编译====================================================== ...
- #define的3种用法详解
1.#define 的作用 在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为"宏".被定义为"宏"的标识符称为"宏名".在编译 ...
- #define命令的一些高级用法
=========================================================== define中的三个特殊符号:#,##,#@ ================= ...
- 【02】尽量以const,enum,inline替换#define
1.考虑为什么? 首先,#define不是语言的一部分,而是预编译过程.也就是在编译器编译之前,进行文本替换.考虑#define Pi 3.1425:在编译之前,Pi都会被文本替换为3.1415,因此 ...
- SQL:define和verify命令及替换变量&
=================替换变量&===============使用一个&符号来指定一个变量值,执行SQL语句时,会提示用户输入一个数值. SQL> select sa ...
- 读书笔记 effective c++ Item 2 尽量使用const,枚举(enums),内联(inlines),不要使用宏定义(define)
这个条目叫做,尽量使用编译器而不要使用预处理器更好.#define并没有当作语言本身的一部分. 例如下面的例子: #define ASPECT_RATIO 1.653 符号名称永远不会被编译器看到.它 ...
随机推荐
- Windows Phone8开发工具包简述(转载)
Windows Phone 软件开发包 (SDK) 8.0 可为您提供开发 Windows Phone 8 和 Windows Phone 7.5 应用和游戏所需的工具. 概述Windows Phon ...
- vs2010 更新jQuery智能提示包
vs2010 更新jQuery只能提示包时,可以直接在NuGet中更新 jquery-2.1.0-vsdoc.js jquery-2.1.0.js jquery-2.1.0.min.js jquery ...
- 虚拟机之仅主机模式(HostOnly)链接外网设置
我的环境: 虚拟机-VMware 虚拟系统-CentOS 现实主机-win7 具体设置步骤: 一.设置现实主机 (地址等不用额外设置,下面是我电脑正常上网的配置) 将本地链接设置共享(这步很重要) 二 ...
- 开源软件授权协议详解(GPL/MPL/LGPL/BSD/Apache Licence/Creative Commons/MIT)
开源在今天的软件业已经很普遍,但开源是否意味着使用者可以对开源后的代码为所欲为呢? 答案是否定的. 开源运动同样有自己的游戏规则和道德准则. 不遵行这些规则不但损害开源运动的健康发展,也会对违规者造成 ...
- java-mina(nio 框架)
mina是对nio的具体实现.是目前比较高效和流行的nio框架了. 下面是对使用mina进行通讯的一个简单demo,后面再用mina写一个RPC的简单框架. mina主要包括: (使用的mina版 ...
- FZU2132 - LQX的作业(概率论)
Problem Description LQX在做作业时遇到一个难题不会做,请你帮她计算一下:在N个独立地分布于0和1之间的随机变量排为非递减顺序之后,这些变量中第M个小于等于x的概率是多少? Inp ...
- 绘制3D的托卡马克位形图的matlab脚本文件 ThreeD.m
% 绘制3D的托卡马克位形图, (V 0.1 by Jiale Chan for Y. H. Huang) % Dee Formula % 特征参数 rzero = 2.0; rmax ...
- Char* ,CString ,WCHAR*之间的转换
关于Char* ,CString ,WCHAR*之间的转换问题 GDI+所有类的接口函数如果要传递字符串作为参数的话,似乎都用UNICODE串,即WCHAR*.我开始也被整得晕头转向,因为窗口编程所用 ...
- 【转】android多分辨率适配
前一阶段开发android项目,由于客户要求进行多分辨率适配,能够支持国内主流的分辨率手机.因此经过了几次开发走了很多弯路,目前刚刚领略了android多分辨率适配的一些方法. 先介绍一下所走的弯路, ...
- UIwebView实现html的离线缓存
1.html的缓存主要採取ASIHTTPRequest的缓存策略 (1).设置缓存策略 //设置缓存 ASIDownloadCache *cache=[[ASIDownloadCache alloc] ...