【问题标题】:how to printf pre-defined cflags如何打印预定义的cflags
【发布时间】:2018-03-14 02:15:09
【问题描述】:

我在 Unix 环境中有一个简单的 cpp 文件,如下所示:

#include <stdio.h>
#ifndef HELLO
    #define HELLO    "hello"
#endif

int main()
{
    printf("HELLO = %s \n", HELLO);
    return 0;
}

如果编译并运行它,它会打印出HELLO = HELLO

但是,当我导出HELLO="HELLO",然后使用g++ -Wall -g -DHELLO 编译程序时,我收到一条警告:

警告:格式“%s”需要“char*”类型的参数,但参数 2 的类型为“int”[-Wformat=] printf("你好 = %s \n", 你好);

当我运行程序时,我遇到了分段错误。

如何在代码中打印-DHELLO

【问题讨论】:

  • -DHELLO 等同于#define HELLO 1,因此您得到的代码不正确。你需要做'-DHELLO="hello"'(你可以通过直接调用预处理器cppecho 'HELLO' | cpp -DHELLO来检查这个)

标签: c++ printf cflags


【解决方案1】:

-DHELLO 等同于#define HELLO 1,它解释了编译错误,它抱怨int,而不是char*

尝试像这样编译:

g++ -Wall -g -DHELLO="hello"

【讨论】:

    猜你喜欢
    • 2010-09-16
    • 2017-02-22
    • 1970-01-01
    • 2018-02-28
    • 2017-05-24
    • 2021-11-14
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    相关资源
    最近更新 更多