首页 > 编程语言 >C++ include头文件引入规则

C++ include头文件引入规则

时间:2024-04-29 16:00:36浏览次数:32  
标签:标头 头文件 C++ 语法 搜索 include example

include引入头文件规则

语法定义

C++中include关键字用于引入其他头文件。在程序处于预处理阶段时,会将目标引入的头文件的内容添加该指令的位置。引入语法见如下2种方式:

// 语法1
#include <example_header1>

// 语法2
#include "example_header2"
  1. 语法1会搜索由example_header1唯一识别的标头,并将该指令替换为这个标头的全部内容。在一系列由实现定义的地点中搜索由example_header1唯一识别的标头,并将该指令替换为这个标头的全部内容。由实现定义如何制指定这些地点和识别标头。
  2. 语法2会搜索由example_header2识别的源文件,并将该指令替换为这个源文件的全部内容。可能退回至方式1并将example_header2视为标头标识符,将该指令替换为由example_header2识别的源文件的全部内容。所指名的源文件通过由实现定义的方式进行搜索。如果不支持这种搜索或者搜索失败,该指令按语法1重新处理,将原指令中包含的序列(包括大于号,如果存在)作为语法1中所需的序列。

内容参考链接:
源文件包含 - cppreference.com

GCC-11.4.0实现

以上两种语法所使用的头文件搜索路径由具体编译器实现定义,目前C++项目开发主要使用GCC作为主要编译工具链。GCC对于include语法实现规则如下:

  1. 对于#include <file>语法:用于引入系统头文件,它在系统目录的标准列表中搜索文件名文件,可以在编译时使用-I选项将目录前置到该列表中。对于Ubuntu系统而言,系统默认搜索路径为/usr/include/usr/local/include
  2. 对于#include "file"语法:用于自己项目的头文件,它在当前文件所在目录搜索文件名文件,可以在编译时使用-iquote选项将自定义目录添加至搜索目录;如果搜索失败,则会退化为include <file>方式继续搜索。

#include的参数,无论是用引号还是尖括号分隔,其行为都像字符串常量,因为注释无法识别,宏名称也无法展开。因此,#include<x/*y>指定包含名为x/*y的系统头文件。但,若反斜杠出现在文件中,它们将被视为普通文本字符,而不是转义字符。不处理任何适用于C中字符串常量的字符转义序列。因此,#include "x\n \\y"指定一个包含三个反斜杠的文件名(有些系统将“\”解释为路径名分隔符。所有这些系统也以相同的方式解释“/”。仅使用“/”最便于移植。)。如果文件名后面的行中有任何内容(注释除外),则为错误。
内容参考链接:
Include Syntax (The C Preprocessor)

标签:标头,头文件,C++,语法,搜索,include,example
From: https://www.cnblogs.com/baiweituyou/p/18165956

相关文章

  • 开发示例、C++身份证二要素实名认证接口
    在这个数据如潮的时代,我们渴望每一次点击都安心无忧。翔云身份证二要素认证,通过核验身份证号与姓名信息是否匹配的方式为您个人信息的安全加把锁,如同守护家门的钥匙,给予您最坚实的依靠。翔云二要素实名认证接口,实时联网核验身份证信息的真伪,核验返回一致或者不一致的结果......
  • C++ 实现基于TCP的聊天室
    需求以及思路客户端启动以后,需要去连接服务端,并在控制台输入消息发送到服务端,服务端收到该消息后发送给所有已连接的客户端。所以客户端需要做的事情只有两个:接收用户输入并将其发送到服务端接收服务端消息并将其显示到控制台服务端要做的事情也是两个:接待新连接上的客户......
  • 带你走近MISRA C++:2023
    随着汽车工业迈入数字化转型的新纪元,软件的安全性与可靠性已跃升为设计和开发核心环节的重中之重。MISRAC++标准的诞生与演进,精准地回应了行业发展的需求。自MISRAC++标准首次面世以来,它便被奉为汽车软件工程师在开发实践中的圭臬。  MISRAC++的发展史  MISRAC++的......
  • windows api SendMessage依赖的库和头文件
    SendMessage 是WindowsAPI中的一个函数,用于向指定窗口发送消息。在WindowsAPI中,SendMessage 函数的原型定义在 winuser.h 头文件中,因此您需要包含该头文件。另外,SendMessage 函数属于User32.dll动态链接库,因此您需要在链接时引入User32.lib库。#pragmacomment......
  • C++中StringPiece了解
    转自:https://blog.csdn.net/zxpoiu/article/details/1172580471.介绍使用c++string类不可避免会带来很多不必要的拷贝,拷贝多了必然影响性能。因此在很多高性能C++框架的实现中,都会使用StringPiece类作为string类的wrapper,该类只持有目标字符串的指针,而避免额外的拷贝。class......
  • c++ 快速复习第一部份
    去年有事无事学过一c++,,由于工作用不上,学来没有用,所以学得乱七八的,最近需要复习一下,因为最近想学习一下硬件相关第一  引用头文件和自定义头#include<iostream>usingnamespacestd;//引用命名空间可以避免使用::语法intmain(){默认输出写法:std::cout<<"Hello,wor......
  • C++ 异常处理机制详解:轻松掌握异常处理技巧
    C++异常处理C++异常处理机制允许程序在运行时处理错误或意外情况。它提供了捕获和处理错误的一种结构化方式,使程序更加健壮和可靠。异常处理的基本概念:异常:程序在运行时发生的错误或意外情况。抛出异常:使用throw关键字将异常传递给调用堆栈。捕获异常:使用try-cat......
  • C++编程英语词汇
    abstract抽象的abstraction抽象性、抽象件access访问accesslevel访问级别accessfunction访问函数adapter适配器address地址address-ofoperator取地址操作符aggregation聚合algorithm算法allocate分配allocator分配器application应用程序architecture体系结构argu......
  • C++多态与虚拟:Objects 实例化(Objects Instantiation)探究
    一、Objects的创建依据已有的classCPoint,我们可以产生一个或多个object(对象),或者说是产生一个instance(实体):CPointaPoint(7.2);//aPoint._x初始值为7.2aPoint.x(5.3);//aPoint._x现值为5.3这样的objects可能放在函数的stack之中(对象是在函数内部创建的,......
  • Installation requirements for SAP Kernels on Windows (C++ runtime environment, V
      Symptom在Windows执行StartSAP,报错信息找不到指定的模块:"Theprogramcan'tstartbecausemsvcr100.dllismissingfromyourcomputer.""无法启动此程序,因为计算机中丢失了msvcr100.dll。尝试重新安装该程序以解决此问题。" OtherTermsC,C++,runtime,VCred......