gpt4 book ai didi

c - 使用 Assert 和 -B 进行 Makefile 帮助/说明

转载 作者:行者123 更新时间:2023-11-30 17:10:13 25 4
gpt4 key购买 nike

我在使用 makefile 和使用断言进行编译时遇到问题。对于作业,我应该使用 make -B FLAG=-DNDEBUG 来关闭 Debug模式并使用 make -B 将其打开进行编译。我不确定 -B 的作用,也不理解它的文档“-B, --always-make 无条件地生成所有目标”(来自手册页)。如果有人可以提供帮助,那就太棒了!

最佳答案

感谢@MadScientist 指出我回答中的错误。
(-D是编译器选项,不是make指令的选项)

[更正后答案]
使 FLAG=-DNDEBUG

使-B FLAG=-DNDEBUG

在这种情况下,您必须拥有自己的自定义 makefile。make 指令定义的标志可以在 makefile 中添加编译选项。
例如
生成文件->
全部:
gcc $FLAG -o test -c test.c

[修正前先回答]
make ---> 如果是第一次,则全新构建,如果连续调用,则仅针对修改的源文件或更新的库的链接进行增量构建

make -B ---> 始终进行全新构建,而不是增量构建

make -B -DNDEBUG ---> 关闭调试日志(根据您的代码使用 NDEBUG 宏来控制调试代码),始终执行全新构建

使用NDEBUG宏控制函数调用序列调试的示例代码:

void test_func()
{
#ifndef NDEBUG
printf("%s::%d::++Entered\n, __func__, __LINE__);
#endif /* NDEBUG */

/* Your code goes here */
...

#ifndef NDEBUG
printf("%s::%d::--Exiting\n, __func__, __LINE__);
#endif /* NDEBUG */

}

当使用make -B(或make)来编译程序时,程序将在执行时打印调试日志。

当使用 make -B -DNDEBUG(或 make -DNDEBUG)编译程序时,由于这次定义了 NDEBUG 符号,因此不会打印调试日志。

关于c - 使用 Assert 和 -B 进行 Makefile 帮助/说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32960464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com