加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 什么时候.h不需要包含头文件?

发布时间:2020-12-16 10:16:35 所属栏目:百科 来源:网络整理
导读:这有效: #include iostreamusing namespace std; 但这失败了: #include stdio 什么时候不需要? 关于命名空间问题,我在cstdio中找不到这样的逻辑: #pragma once#ifndef _CSTDIO_#define _CSTDIO_#include yvals.h#ifdef _STD_USING #undef _STD_USING #in
这有效:

#include <iostream>
using namespace std;

但这失败了:

#include <stdio>

什么时候不需要?

关于命名空间问题,我在cstdio中找不到这样的逻辑:

#pragma once
#ifndef _CSTDIO_
#define _CSTDIO_
#include <yvals.h>

#ifdef _STD_USING
 #undef _STD_USING
  #include <stdio.h>
 #define _STD_USING

#else /* _STD_USING */
 #include <stdio.h>
#endif /* _STD_USING */

// undef common macro overrides
 #undef clearerr
 #undef feof
 #undef ferror
 #undef getc
 #undef getchar
 #undef putc
 #undef putchar

 #define _HAS_CONVENTIONAL_CLIB 1
 #define _IOBASE    _base
 #define _IOPTR _ptr
 #define _IOCNT _cnt

#ifndef _FPOSOFF
  #define _FPOSOFF(fp)  ((long)(fp))
#endif /* _FPOSOFF */

typedef FILE _Filet;

#ifndef RC_INVOKED
 #if _GLOBAL_USING
_STD_BEGIN
using ::_Filet;

using ::size_t; using ::fpos_t; using ::FILE;
using ::clearerr; using ::fclose; using ::feof;
using ::ferror; using ::fflush; using ::fgetc;
using ::fgetpos; using ::fgets; using ::fopen;
using ::fprintf; using ::fputc; using ::fputs;
using ::fread; using ::freopen; using ::fscanf;
using ::fseek; using ::fsetpos; using ::ftell;
using ::fwrite; using ::getc; using ::getchar;
using ::gets; using ::perror;
using ::putc; using ::putchar;
using ::printf; using ::puts; using ::remove;
using ::rename; using ::rewind; using ::scanf;
using ::setbuf; using ::setvbuf; using ::sprintf;
using ::sscanf; using ::tmpfile; using ::tmpnam;
using ::ungetc; using ::vfprintf; using ::vprintf;
using ::vsprintf;


_STD_END
 #endif /* _GLOBAL_USING */
#endif /* RC_INVOKED */

#endif /* _CSTDIO_ */

解决方法

C标准定义的头文件不需要它,它们都没有.h扩展名. stdio.h的C版本是:

#include <cstdio>

包装stdio.h,将其中的名称放在C std命名空间中,
但如果您愿意,您仍然可以使用C代码中的所有C标准头文件.

编辑:将名称放在gst版本的cstdio中的std命名空间中的宏是:

_GLIBCXX_BEGIN_NAMESPACE(std)

您可以通过尝试使用以下内容来检查您自己的标头是否应该执行以下操作:

std::printf( "hello" );

在你的代码中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读