假设我有一个名为a"b.ha>b.h的头文件,如何转义INCLUDE指令中的">字符?

// this does not work
#include "a\"b.h"

推荐答案

在使用#include <filename>指令时,不允许将>字符作为文件名的一部分(在#include "filename"中,不允许将"作为文件名的一部分).没有标准的方法来转义序列中的任何字符,任何这样的功能都将是编译器的扩展.cppreference link.

对于文件名a>b.h的特定情况,您可以将其更改为#include "a>b.h",它应该可以工作.

文件名a"b.h不太走运--即使在#include <a"b.h>中,它的实现也定义了如何对待"个字符(或者如果完全支持的话).

"之外,还在#include指令的文件名部分使用字符'\///*是实现定义的,可能不受支持.

C++相关问答推荐

char为16位且Short也为16位的c环境合法吗

当包含头文件时,gcc会发出隐式函数声明警告

标准的C17标准是用括号将参数包装在函数声明中吗

如何一次获取一个字符

如果我释放其他内容,返回值就会出错

致命:ThreadSaniizer:在Linux内核6.6+上运行时意外的内存映射

如何使用指向 struct 数组的指针并访问数组中特定索引处的 struct

如何识别Linux中USB集线器(根)和连接到集线器(根设备)的设备(子设备)?

进程在写入管道时挂起

如何在CANbus RX/TX FIFO起始地址寄存器(ATSAME 51)的特定地址初始化数组?

CC2538裸机项目编译但不起作用

为 struct 中的数组动态分配内存时出错

如何在VS 2022中正确安装额外的C头文件

链接到底是如何工作的,我在这里到底做错了什么

Printf()在C中打印终止字符之后的字符,我该如何解决这个问题?

即使我在C++中空闲,也肯定会丢失内存

在Ubuntu上使用库部署C程序的最佳实践

无法理解 fgets 输出

添加/删除链表中的第一个元素

(GNU+Linux) 多个线程同时调用malloc()