haveaheadache是什么意思eaheadache在线翻译-广州伊利莎白医院


2023年4月7日发(作者:like you是什么意思)

#undef常⽤法

C语⾔中#undef的语法是:

#undef标识符

⽤来将前辞旧迎新的唯美的句子 ⾯定义的宏标识符取消定义。

整理了如下⼏种常见⽤法,如果以后发现其他的再添加进来。

1、在⼀个程序块中⽤完宏定义后,为防⽌后⾯标识符冲突需要取消其宏定义:

#include

intmain()

{

#defineMAX200

printf(\"MAX=%dn\",MAX);

#undefMAX

{

intMAX=10;

printf(\"MAX=%dn\",MAX);

}

return0;

}

/********程序1:main.c********/

2、在同⼀个头⽂件中定义结构类型相似的对象,根据宏定义不同获取不同的对象,主要⽤于增强代码的可读性:

例如:在头⽂件student.h中定义两个学⽣对象(⼩明和⼩红),两个对象互不⼲涉:

#ifdefMING

#defineMING_AGE20

#defineMING_HEIGHT175

#endif

#ifdefHONG

#defineHONG_AGE19

#defineHONG_HEIGHT165

#endif

/********头⽂件2:student.h********/

在源⽂件中使⽤这两个对象:

#include

#defineMING

#include\"student.h\"

#undefMING

#defineHONG

#include\"student.h\"

#undefHONG

intmain()

{

printf(\"XiaoMing\'sageis%d.n\",MING_AGE);

printf(\"XiaoHong\'sageis%d.n\",HONG_AGE)嗷嗷待哺 ;

return0;

}

/********程序2:main.c********/

在⼀个头⽂件⾥定义的两个对象与分别在两个头⽂件⾥定义效果相同,但如果将相似的对象只⽤⼀个头⽂件申明,可以增强源代码的可读

性。

3、将某个库函数包装成⾃定义接⼝,⽽只允许⽤户调⽤⾃定义接⼝,禁⽌直接调⽤库函数:

(此例来源于《C和指针》)

⾃定义安全的内存分配器接⼝:

/*

**定义⼀个不易发⽣错误的内存分配器

*/

#include

#defi端午节诗歌朗诵稿 nemalloc//防⽌直接调⽤malloc!

#defineMALLOC(num,type)(type*)alloc((num)*sizeof(type))

externvoid*alloc(size_tsize);

/***********不易发⽣错误的内存分配器接⼝:alloc.h***********/

其中“#definemalloc”是为了防⽌⽤户直接调⽤库函数malloc,只要包含了这个头⽂件alloc.h,就不能直接调⽤库函数malloc,⽽只能

调⽤⾃定义函数MALLOC,如果⽤户要调⽤库函数malloc编译器会发⽣错误;

⾃定义安全的内存分配器实现:

/*

**不易发⽣错误的内存分配器的实现

*/

#include

#include\"alloc.h\"

#楚人有涉江者文言文翻译 undefmalloc

vo春草明年绿王孙归不归 id*alloc(size_tsize)

{

void*new_mem;

new_mem=malloc(size);

if(new_mem==NULL)

{

printf(\"Outofmemory!n\");

exit(1);

}

returnnew_mem;

}

/***********不易发⽣错误的内存分配器实现:alloc.c***********/

因为在实现中需要⽤到库函数malloc,所以需要⽤这⼀句“#undefmalloc”取消alloc.h中对malloc的宏定义。

这种技巧还是⽐较有意思的,⽤于对已经存在的函数进⾏封装,感觉还是很有⽤哒。

4、⽤于调试头⽂件中,偶然看到这样⼀个代码⽤到了#undef,写于此作为记录:

#ifdef_DEBUG_

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#definenewDEBUG_NEW

#endif

/***********调试代码头⽂件:debug.h***********/

暂时想到这么多,以后看到再补充吧。

CSDN的编辑器怎么芙蓉楼送辛渐 这么难⽤,源代码复制进来格式都变了~~~~

更多推荐

UNDEF是什么意思EF在线翻译读音例句