首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

#include directive

将其他源文件包含到当前源文件中,该源文件位于指令之后的行中。

句法

#include <filename>

(1)

?

#include "filename"

(2)

?

__has_include ( " filename " )__has_include ( < filename > )

(3)

(since C++17)

任何预处理令牌%28宏常量或表达式%29允许作为参数#include__has_include%28自C++17%29以来,只要它们扩展为由<>""...

解释

1,2%29包含源文件,由文件名标识为当前源文件,该源文件位于指令之后的行中。如果找不到文件,则程序格式不正确.

1%29以实现定义的方式搜索文件。此语法的目的是搜索在实现控制下的文件。典型的实现只搜索标准目录。标准C++库和标准C库隐式地包含在这些标准包含目录中。标准的包含目录通常可以由用户通过编译器选项来控制。

2%29以实现定义的方式搜索文件。此语法的目的是搜索不受实现控制的文件。典型的实现首先搜索当前文件所在的目录,只有在找不到该文件时,才搜索标准包含目录,如%281%29所示。

3%29预处理器常量表达式,其计算值为1如果找到文件名,并且?0?如果不是。如果该参数将不是一个有效的参数,则该程序的格式是错误的。#include指令。

注记

当包含文件时,它将由翻译阶段1-4,它可以递归地包括嵌套的展开。#include指令。为了避免重复包含同一文件和在文件包含自身时(可能是临时的)进行没完没了的递归,头护罩是常用的:整个标头被包装在里面。

二次

代码语言:javascript
复制
#ifndef FOO_H_INCLUDED /* any name uniquely mapped to file name */
#define FOO_H_INCLUDED
// contents of the file are here
#endif

二次

许多编译器也实现了非标准的。pragma#pragma once具有类似的效果:如果文件%28(其中文件标识是以操作系统特定的方式确定的)已经包含在其中,它将禁用文件的处理。

二次

代码语言:javascript
复制
#if __has_include(<optional>)
#  include <optional>
#  define have_optional 1
#elif __has_include(<experimental/optional>)
#  include <experimental/optional>
#  define have_optional 1
#  define experimental_optional 1
#else
#  define have_optional 0
#endif
 
#ifndef TEXT
    #include <iostream>
 
    int main()
    {
    #define TEXT "Hello, world!"
    #include __FILE__
    #define TEXT "Hello again!"
    #include __FILE__
 
    }
#else
    std::cout << TEXT << '\n';
    #undef TEXT
#endif

二次

产出:

二次

代码语言:javascript
复制
Hello, world!
Hello again!

二次

另见

cpp/header

a list of C++ Standard Library header files

C源文件包含文档

代码语言:txt
复制
 ? cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com