为什么clang自动添加“ cstdio.h”?

西蒙·福图纳

假设我有如下代码段:

#include <iostream>
using namespace std;
int main(int argc, char *argv[]) {
printf("%d",5);
}

它可以在我的Apple LLVM版本5.0(clang-500.2.79)(基于LLVM 3.3svn)编译器上正常运行,但是在gcc版本4.4.5(Debian 4.4.5-8)上失败,表示没有识别“ printf”功能。我的大学的教授使用后者,今天他们说我的程序不起作用。

我的问题是-在这种情况下,为什么clang(在OS X 10.9上由g ++ namefile.cpp运行)自动包含“ cstdio.h”?

PS。我知道C ++中有cin和cout流,并且可以解决该问题,但是我的问题是理论性更高的,并且出于将来自动包含的目的。

罗伯·肯尼迪

标准C ++标头允许包含任何其他标准标头。每个实现都可以选择确定哪些标头包含在其他标头中。您已经包含了iostream,并且允许包含cstdio,但是也不允许包含。您的Clang版本和教师的GCC版本显然采用了不同的选择。

最佳做法要求您明确包含所需的标头。不要指望您的实现隐式包含未提及的标头。从一个发行版更改为另一个发行版很容易,并且会影响可移植性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么clang自动添加“ cstdio.h”?

来自分类Dev

在C ++中使用<cstdio>而不是<stdio.h>时,为什么“ std :: printf”和“ printf”都进行编译?

来自分类Dev

使用cstdio就地编辑文件?

来自分类Dev

C ++库替换标准的cstdio

来自分类Dev

为什么不会将autoconf.h自动复制到它的位置?

来自分类Dev

为什么要使用conio.h?

来自分类Dev

为什么.h页末尾包含#endif?

来自分类Dev

为什么01001000等于Binary中的H

来自分类Dev

cstdio fopen和fclose在osx上无法正常工作

来自分类Dev

cstdio fopen和fclose在osx上无法正常工作

来自分类Dev

与cstdio和iostream在printf的汇编级别上的差异

来自分类Dev

为什么在打开H2控制台时看不到Java添加的表?

来自分类Dev

为什么在打开H2控制台时看不到Java添加的表?

来自分类Dev

为什么当我添加导航栏时,它会移动我的H1元素?

来自分类Dev

为什么在Vim和emacs中将clang用于自动完成?

来自分类Dev

为什么在Vim和emacs中将clang用于自动完成?

来自分类Dev

为什么在fcntl.h中声明open,而在unistd.h中声明close?

来自分类Dev

为什么math.h需要链接到makefile中而不是string.h中?

来自分类Dev

为什么我们使用#include“ stdafx.h”而不是#include <stdafx.h>?

来自分类Dev

为什么使用.h1代替实际的h1?

来自分类Dev

为什么<h1>中的<h2>不继承color属性的值?

来自分类Dev

为什么在math.h中而不是在float.h中定义了fpclassify()宏?

来自分类Dev

为什么df和df -h显示不同的值?df -h如何执行计算?

来自分类Dev

提取大文件时,为什么du -h / du / df / df -h不刷新

来自分类Dev

为什么我不能在 ListFunction.h 中包含 ListDefinition.h

来自分类Dev

为什么stdio.h中的FILE结构是大写的?

来自分类Dev

为什么c的stdbool.h包含#define false false

来自分类Dev

为什么找不到XCTest / XCTest.h?

来自分类Dev

为什么stddef.h不在/ usr / include中?

Related 相关文章

  1. 1

    为什么clang自动添加“ cstdio.h”?

  2. 2

    在C ++中使用<cstdio>而不是<stdio.h>时,为什么“ std :: printf”和“ printf”都进行编译?

  3. 3

    使用cstdio就地编辑文件?

  4. 4

    C ++库替换标准的cstdio

  5. 5

    为什么不会将autoconf.h自动复制到它的位置?

  6. 6

    为什么要使用conio.h?

  7. 7

    为什么.h页末尾包含#endif?

  8. 8

    为什么01001000等于Binary中的H

  9. 9

    cstdio fopen和fclose在osx上无法正常工作

  10. 10

    cstdio fopen和fclose在osx上无法正常工作

  11. 11

    与cstdio和iostream在printf的汇编级别上的差异

  12. 12

    为什么在打开H2控制台时看不到Java添加的表?

  13. 13

    为什么在打开H2控制台时看不到Java添加的表?

  14. 14

    为什么当我添加导航栏时,它会移动我的H1元素?

  15. 15

    为什么在Vim和emacs中将clang用于自动完成?

  16. 16

    为什么在Vim和emacs中将clang用于自动完成?

  17. 17

    为什么在fcntl.h中声明open,而在unistd.h中声明close?

  18. 18

    为什么math.h需要链接到makefile中而不是string.h中?

  19. 19

    为什么我们使用#include“ stdafx.h”而不是#include <stdafx.h>?

  20. 20

    为什么使用.h1代替实际的h1?

  21. 21

    为什么<h1>中的<h2>不继承color属性的值?

  22. 22

    为什么在math.h中而不是在float.h中定义了fpclassify()宏?

  23. 23

    为什么df和df -h显示不同的值?df -h如何执行计算?

  24. 24

    提取大文件时,为什么du -h / du / df / df -h不刷新

  25. 25

    为什么我不能在 ListFunction.h 中包含 ListDefinition.h

  26. 26

    为什么stdio.h中的FILE结构是大写的?

  27. 27

    为什么c的stdbool.h包含#define false false

  28. 28

    为什么找不到XCTest / XCTest.h?

  29. 29

    为什么stddef.h不在/ usr / include中?

热门标签

归档