我们可以编写一个在C++中不使用预处理器的可移植包含保护程序吗?

Ete*_*ner 0 c++ c-preprocessor

我们可以编写一个在C++中不使用预处理器的可移植包含保护程序吗?如果是这样,怎么办呢?

Die*_*Epp 6

没有.

  1. #include没有预处理器就无法使用.
  2. 如果没有预处理程序指令,包括相同文件两次将始终产生相同的令牌序列.

有几种不可移植的方法(两者都使用预处理器),例如:

#pragma once
Run Code Online (Sandbox Code Playgroud)

#import "file.h"
Run Code Online (Sandbox Code Playgroud)

但是标题保护在任何地方都可以工作,并且您的编译器可能已经过优化以检查标头保护,因此它甚至不会处理重复的#include指令.