C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在makefile构建中启用“#ifndef /#endif”块?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在MuPDF中启用调试选项.出于某种原因,他们使用了#ifndef NDEBUG和#endif来清除我想要使用的代码.我在整个图书馆搜索,但找不到任何地方定义的任何NDEBUG痕迹.我已经设法通过在标题添加#undef NDEBUG来解决这个问题,但我想知道是否有更多的非侵入性方法.

那么,你能从makefile中启用“#ifndef /#endif”块吗?

另外,为什么要使用#ifndef来使代码变灰?它不应该是#ifdef NDEBUG吗?

解决方法

您可以将-DNDEBUG添加到Makefile中的以下3个变量 – CFLAGS,CPPFLAGS和CXXFLAGS以定义NDEBUG.
这相当于添加#define NDEBUG

还有其他变化:

@H_489_19@-DNBDEBUG=1

相当于

@H_489_19@#define NDEBUG 1

并回答为什么有人使用#ifndef代替#ifdef的问题是因为它非常清楚地突出了对原始代码修改.

例如,请将以下代码视为原始版本:

@H_489_19@int a = 123; int b = 346; int c = a + b;

而且你需要添加一个宏DO_MULT,它会相乘 – 有两种方法可以做到这一点.

一个变化:

@H_489_19@int a = 123; int b = 346; #ifdef DO_MULT int c = a *b; #else int c = a + b; #endif

第二种变化:

@H_489_19@int a = 123; int b = 346; #ifndef DO_MULT int c = a + b; #else int c = a *b; #endif

如果您使用difftools来查看更改 – 第二个变体将比第一个更明显地显示差异.

使用#ifndef的另一个原因是在CATCH-ALL-EXCEPT场景中做了些什么.

大佬总结

以上是大佬教程为你收集整理的如何在makefile构建中启用“#ifndef /#endif”块?全部内容,希望文章能够帮你解决如何在makefile构建中启用“#ifndef /#endif”块?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。