有没有办法在C++中“取消包含”文件?

我有一个只在另一个类的一个特定部分使用的类。主类的任何其他部分都没有提到它。我在文件顶部包含相应的标题。

在我使用它之后,有什么方法可以“取消包含”标题吗?

我的意思是,在您“取消包含”类的标头后,将不会定义对该类的引用,并且在编译时对该类的任何调用都会引发错误。

伪代码:

// code section where "cubeData" should be visible
#include "CubeData.h"

void mainWidget::createGeoObjects() {
  cube = new cubeData();
  // ...
}

// #uninclude "CubeData.h" - ???
//
// code section where "cubeData" should be invisible
void mainWidget::otherFunction() {
  cube = new cubeData(); // should result in a compile error
  // ...
}

回答

在代码文件的中途取消包含头文件的效果,您在文件开头包含了头文件,应该是后半部分的代码就像没有包含头文件一样。

这可以通过将代码文件分成两部分来实现。
第一部分包括有问题的标题(可能还有其他一些标题)。
第二部分不包括标题(但又是其他部分,因此它们的内容是已知的)。

您可能需要将上半部分需要在下半部分可见的任何内容放入新标题中,并将其包含在两个部分中。

简而言之,创建两个代码文件并将您需要的内容包含在其中。尤其不要包括您不想被看到的内容。


回答

不。

其中一部分是包括处理器的一部分。对于实际的编译器,包含文件中的代码和包含文件中的代码看起来相同。

  • I am tempted to edit my answer to start with "Yes.". Not to spite you, but to highlight the different approach. I accept that you answer "No." to express that unincluding is not possible as such and agree that preprocessor do not work that way. My answer is on achieving the effect, yours is on doing it strictly as asked. I do not actually see a conflict between the two answers. Have my upvote:

以上是有没有办法在C++中“取消包含”文件?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>