为什么printf在Dev C ++中工作,而不是CLion?

时间:2017-09-09 21:51:54

标签: c++ printf clion

我最近开始寻找用于C ++的新IDE。我曾经使用过Dev C ++,但与其他一些IDE相比,它有点准系统。

我遇到了一个问题,我试图和我的教授谈谈,他说这很可能是由于标准的库实现而不是IDE本身 - 这让我觉得我可以解决它?我会谈到这一点:

在Dev C ++中,当我说printf(“%'14 .2f”,变量)时,它按照我的预期打印。但是,在CLion中,它标记%符号并显示“未知,不完整或可选格式说明符”并打印'14 .2f而不是我的变量。我知道这是因为撇号,但我不知道如何解决它。

有没有人有任何想法?我的教授说GCC的libstd ++应该可以正常工作,但我不知道如何处理这些信息......

谢谢!

编辑:顺便说一下,我在Windows上。

1 个答案:

答案 0 :(得分:1)

使用撇号作为printf格式字符串中的标志字符是POSIX定义的扩展名:

  

十进制转换结果的整数部分(%i%d,   %u%f%F%g%G)应使用数千个分组进行格式化   字符。对于其他转换,行为未定义。该   使用非货币分组字符。

您的教授是正确的:对此扩展的支持由标准库实现决定,而不是由IDE或编译器决定。

可是:

  

我的教授说GCC的libstd ++应该可以正常工作,但我不知道如何处理这些信息。

libstdc ++是一个C ++库。它没有提供printf函数的实现;这是C库的一部分。 (C ++库包含大部分C库。)

您应该研究IDE正在使用的C ++实现(编译器和库)。您可以哄骗CLion使用Dev C ++使用的相同C ++实现。