如何在makefile构建中启用“#ifndef /#endif”块?
发布时间:2020-12-16 10:22:38 所属栏目:百科 来源:网络整理
导读:我正在尝试在MuPDF中启用调试选项.出于某种原因,他们使用了#ifndef NDEBUG和#endif来清除我想要使用的代码.我在整个图书馆搜索,但找不到任何地方定义的任何NDEBUG痕迹.我已经设法通过在标题中添加#undef NDEBUG来解决这个问题,但我想知道是否有更多的非侵入
我正在尝试在MuPDF中启用调试选项.出于某种原因,他们使用了#ifndef NDEBUG和#endif来清除我想要使用的代码.我在整个图书馆搜索,但找不到任何地方定义的任何NDEBUG痕迹.我已经设法通过在标题中添加#undef NDEBUG来解决这个问题,但我想知道是否有更多的非侵入性方法.
那么,你能从makefile中启用“#ifndef /#endif”块吗? 另外,为什么要使用#ifndef来使代码变灰?它不应该是#ifdef NDEBUG吗? 解决方法
您可以将-DNDEBUG添加到Makefile中的以下3个变量 – CFLAGS,CPPFLAGS和CXXFLAGS以定义NDEBUG.
这相当于添加#define NDEBUG 还有其他变化: -DNBDEBUG=1 相当于 #define NDEBUG 1 并回答为什么有人使用#ifndef代替#ifdef的问题是因为它非常清楚地突出了对原始代码的修改. 例如,请将以下代码视为原始版本: int a = 123; int b = 346; int c = a + b; 而且你需要添加一个宏DO_MULT,它会相乘 – 有两种方法可以做到这一点. 第一个变化: int a = 123; int b = 346; #ifdef DO_MULT int c = a *b; #else int c = a + b; #endif 第二种变化: int a = 123; int b = 346; #ifndef DO_MULT int c = a + b; #else int c = a *b; #endif 如果您使用difftools来查看更改 – 第二个变体将比第一个更明显地显示差异. 使用#ifndef的另一个原因是在CATCH-ALL-EXCEPT场景中做了些什么. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读