在线文档教程
C++
语言 | Language

#include directive

源文件包含

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

句法

#include (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指令。为了避免重复包含同一文件和在文件包含自身时(可能是临时的)进行没完没了的递归,头护罩是常用的:整个标头被包装在里面。

二次

#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(其中文件标识是以操作系统特定的方式确定的)已经包含在其中,它将禁用文件的处理。

二次

#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

二次

产出:

二次

Hello, world! Hello again!

二次

另见

cpp/headera list of C++ Standard Library header files

C源文件包含文档

© cppreference.com

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

http://en.cpPreence.com/w/cpp/preProcessor/include