【发布时间】:2015-12-12 21:18:45
【问题描述】:
C 在某种程度上,不完全是 C++ 的一个子集。因此,我们可以通过稍微更改名称(stdio.h 到 cstdio,stdlib.h 到 cstdlib)来使用 C++ 中的大多数 C 函数/头文件。
我的问题实际上是一种语义问题。在 C++ 代码中(使用最新版本的 GCC 编译器),我可以调用 printf("Hello world!"); 和 std::printf("Hello world!");,它们的工作原理完全相同。在我使用的参考文献中,它也显示为std::printf("Hello world!");。
我的问题是,是否更喜欢在 C++ 中使用 std::printf();?有区别吗?
【问题讨论】:
-
如果有一天他们强制将
C库符号转储到全局命名空间中是非法的,我更喜欢使用std::限定版本。 (另外我有点希望他们把它定为非法)。 -
@Galik:同意。这样可以避免使用 C++ 编译器解决很多关于 C 问题的愚蠢问题。
-
没有“有点怀孕”。 C要么是子集,要么不是。事实是,它不是。这就是必须修改 C 头文件才能在 C++ 中工作的原因。
-
“几乎所有”在谈论一组不可数的许多元素时是一个非常无用的衡量标准。通过同样的论点,您可能会将 C 和 Java 联系起来。
-
@sasauke 不,它不是一个子集。 C 和 C++ 肯定共享一个子集,但 C 本身 不是 C++ 的一个子集。
标签: c++ language-lawyer std