"-dndebug"(小写)在g ++中做什么吗?

 林斯诺_SNOW 发布于 2023-01-08 20:31

我正在使用多年前其他人创建的400行Linux makefile对多平台C++项目进行微小的更改.

makefile中的两行使用-dndebug(小写)作为g ++的命令行参数.
我认为目的是定义ndebug符号,但是当它是小写时,参数甚至可以做任何事情吗?

我对g ++和make的知识很少,但是,通过下面链接的页面,我认为论证需要大写才能工作.
http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html

2 个回答
  • 是的,这应该是大写的-DNDEBUG.

    -D是定义宏的GCC选项.NDEBUG是被定义为根据C标准强制关闭断言的宏.

    我对g ++和make的知识很少,但是,通过下面链接的页面,我认为论证需要大写才能工作.

    至于-dndebug,因为宏区分大小写,我认为它不会有任何影响,即它应该被忽略,除非你有一些引用它的代码.

    2023-01-08 20:36 回答
  • 它很容易测试:

    $ cat test.cpp
    #include <iostream>
    
    int main()
    {
    #ifdef TEST_DEFINE
        std::cout << "defined" << std::endl;
    #endif
        return 0;
    }
    
    $ g++ -o 1 -DTEST_DEFINE test.cpp
    $ ./1
    defined
    $ g++ -o 2 -dTEST_DEFINE test.cpp
    cc1plus: warning: unrecognized gcc debugging option: T [enabled by default]
    cc1plus: warning: unrecognized gcc debugging option: E [enabled by default]
    cc1plus: warning: unrecognized gcc debugging option: S [enabled by default]
    cc1plus: warning: unrecognized gcc debugging option: T [enabled by default]
    cc1plus: warning: unrecognized gcc debugging option: _ [enabled by default]
    cc1plus: warning: unrecognized gcc debugging option: E [enabled by default]
    cc1plus: warning: unrecognized gcc debugging option: F [enabled by default]
    cc1plus: warning: unrecognized gcc debugging option: E [enabled by default]
    $ ./2
    $
    

    因此,您可以看到该-d选项实际上会导致编译器警告,因此它看起来像是-D预期的.

    2023-01-08 20:36 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有