#if defined 和#ifdef的区别

基本上一样,不过后者的应用范围更大,可以支持多个预编译变量的检查:

#if (!defined(_DEBUG) && defined(USE_MYLIB))

  ..........

#endif

这种情况用前一种方式就只能写一个嵌套的条件判断:

#ifndef _DEBUG

  #ifdef USE_MYLIB

    ................

  #endif

#endif

------------------------------------------------------------------

-------------------这是在vc6.0中自动生成的一个-------------------

#if !defined(AFX_AB_H__180F7416_66D6_44B0_A73C_5FB1E376CD48__INCLUDED_)

#define AFX_AB_H__180F7416_66D6_44B0_A73C_5FB1E376CD48__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif       // _MSC_VER > 1000

#include "string"

class AB 

{

public:

 std::string s;

 AB(const std::string _s);

 virtual ~AB();

};

#endif      // !defined(AFX_AB_H__180F7416_66D6_44B0_A73C_5FB1E376CD48__INCLUDED_)

 

------------------------------------------------------------

#ifdef   #ifndef  #define  #if !defined(...)   #if defined(...)

#else  ....

以 #endif 结束

------------------------------------------------------------

 

 

#define 和 #undef

c/c++宏代码

#define TEST_A 1                      // 定义宏 TEST_A  为 1

#define TEST_CLASS_A clase T1       // 定义宏TEST_CLASS_A 为 clase T1        

#include " TEST.h "

#undef   TEST_A                     // 取消宏 TEST_A,为了后面重新定义宏TEST_A  为 2

#undef   TEST_CLASS_A         // 取消宏 TEST_CLASS_A 为了后面重新定义宏 TEST_CLASS_A 为 clase T1 clase T2

    

#define TEST_A 2                      // 重新定义宏 TEST_A  为 2,

#define TEST_CLASS_A clase T1 clase T2

#include " TEST.h "

#undef   TEST_A

#undef   TEST_CLASS_A

原文链接: https://www.cnblogs.com/martini/archive/2012/01/21/2328590.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    #if defined 和#ifdef的区别

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/40534

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 下午5:12
下一篇 2023年2月8日 下午5:13

相关推荐