#undef

#undef 是在后面取消以前定义的宏定义

该指令的形式为

#undef 标识符

其中,标识符是一个宏名称。如果标识符当前没有被定义成一个宏名称,那么就会忽略该指令。

一旦定义预处理器标识符,它将保持已定义状态且在作用域内,直到程序结束或者使用#undef 指令取消定义。

时间: 2024-08-28 08:37:10

#undef的相关文章

程序猿之---C语言细节31(#define和#undef宏细节)

主要内容:#define和#undef宏细节 一.#define和#undef宏细节 宏生命周期从#define开始到#undef结束 # include <stdio.h> #define BSC // #define BMC /* #define EMC */ #define ewaece #define sizeof //下面这个编译错误,上面两个可以编译通过 //#define int int main() { <span><span> </span>

#undef及其用法

简    介 在后面取消以前定义的宏定义 在此程序中,我们将取消在先前程序中对预处理器的定义. 1 #include <stdio.h> 2 int main( void ) 3 { 4 #define MAX 200 5 printf("MAX= %d\n",MAX); 6 #undef MAX 7 #define MAX 300 8 printf("MAX= %d\n",MAX); 9 return 0; 10 }

#ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #endif

情况1:#ifdef _DEBUGvirtual void AssertValid() const;                 //assert(断言)valid(有效的,正确的)virtual void Dump(CDumpContext& dc) const;        //存储上下文#endif 这两个函数是调试用的,第一个函数检查可用性,即是否有效.第二个函数如果未更改的话,最终调用的是Cwnd::Dump();输出窗口类名,标题名等一系列信息(在输出窗口中). #ifdef

宏表达式与函数、#undef、条件编译、

宏表达式在预编译期被处理,编译器不知道宏表达式的存在. 宏表达式没有任何的调用开销 宏表达式中不能出现递归定义. C语言中强大的内置宏 __FILE__:被编译的文件名 //双底线 __LINE__:当前行号 __DATE__:编译时的日期 __TIME__:编译时的时间 __STDC__:编译器是否遵循标准C规范 eg:printf("%s,%d Enter main()...\n",__FILE__,__LINE__); 注意:宏定义对空格比较敏感 #define f (x) ((

C语言 ------ #undef 的使用

#undef 是在后面取消以前定义的宏定义 该指令的形式为 #undef 标识符 其中,标识符是一个宏名称.如果标识符当前没有被定义成一个宏名称,那么就会忽略该指令. 一旦定义预处理器标识符,它将保持已定义状态且在作用域内,直到程序结束或者使用#undef 指令取消定义. #include <stdio.h> #include <stdlib.h> #define Max 5 #undef Max int main() { printf("Max is:%d\n"

#undef取消宏定义

如果你想定义这个宏那就#define X 如果你不想让你已经#define X的宏在其他地方由于引入这个包含宏定义的.h文件而引起一些编译问题,那你就#undef X掉,就这么简单. 举个简单的例子: 有1.c,11.h,12.h三个文件,其中在11.h中定义了#define X extern x int a: 而在12.h中你又定义了#define X int x b: 而在1.c中同时包含了这2个头文件,那就会引起一些问题,此时你必须把其中一个#undef掉来确保宏的正常. #include

easyui加载数据出错Cannot read property ‘length‘ of undef

例如:在treegrid的行编辑中,在执行了onAfterEdit()方法之后,会自动执行onLoadSuccess()方法,从服务器重新加载数据,如果服务器返回的数据为null,那么就会抛出这样一个错误, 源码为: var isArray = $.array.likeArray(data) && !$.util.isString(data), rows = isArray ? data : data.rows; f (!rows.length) { return data; }//这句话

问题 1018: C语言程序设计教程(第三版)课后习题6.8

/******************************************************************** @file Main.cpp @date 2017-05-12 @author Zoro_Tiger @brief 问题 1018: C语言程序设计教程(第三版)课后习题6.8 http://www.dotcpp.com/oj/problem1018.html *************************************************

C预处理器

C预处理器是一种简单的宏处理器. 预处理器是由特殊的预处理器命令行控制的,它们是以#符号开头的源文件行. 预处理器的一般操作:从源文件中删除所有的预处理器命令行,并在源文件中执行这些预处理器命令所指定的转换操作 预处理器代码行的语法与C语言其他部分的语法是完全独立的,但经过预处理所产生的源代码必须在上下文环境中合法 常见的预处理器命令: #define  定义一个预处理器宏   #undef     取消一个预处理器宏 #include   插入另一个源文件的文本 #if        测试一个