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

时间:2010-04-14 17:49:16

标签: c++ c-preprocessor

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

2 个答案:

答案 0 :(得分:6)

没有

  1. 如果没有预处理器,则无法使用#include
  2. 如果没有预处理程序指令,包括相同文件两次将始终产生相同的令牌序列。
  3. 有几种不可移植的方法(两者都使用预处理器),例如:

    #pragma once
    

    #import "file.h"
    

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

答案 1 :(得分:1)

这有点不起作用。如果您是#including个文件,则无论如何都会使用预处理器。你所知道的最接近你所知道的是#pragma once预处理器指令,但它并不是严格可移植的 - 虽然它可以广泛使用 - 它当然依赖于预处理器。