undef这个宏的问题

liuzu2016 liuzu2016 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
例子1:

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE // 这个宏就被取消成功了? 如果成功的话,提供个第2个例子,为什么第二个例子不成功?
static char THIS_FILE[] = __FILE__;
#endif



例子2:

int main ()
{

#ifdef _UNICODE
#undef _UNICODE //我已经取消掉了,那么TCHAR则是char!!!


TCHAR strDirectory[]=_T("c:\\1111\\222\\");

if (!PathFileExists(strDirectory))
{

char strTemp[MAX_PATH]={0};

// _tcsncpy(strTemp,strDirectory,lstrlen(strDirectory));

//PathRemoveBackslash(strDirectory);

//PathAddBackslash(strDirectory);

MakeSureDirectoryPathExists(strDirectory); //error,取消掉宏了,为什么还出错?

}
#endif


return 0;

}

有人说例子2失败的原因:

是顺序问题,

对于取消一个宏, 编译器只看第一次定义的时候,

不会看中途的代码的。




...全文
评论 17
收藏 已收藏
分享
返回顶部
liuzu2016
C++ 语言 65,214 成员 250,514 内容