gpt4 book ai didi

c++ - 避免重新定义宏定义的类

转载 作者:太空宇宙 更新时间:2023-11-04 14:32:44 24 4
gpt4 key购买 nike

C++ 中是否有一种机制可用于实现宏,以便宏定义一个类,同时多次调用宏不会导致类重定义错误?谢谢!

最佳答案

由于宏不能生成任何 C++ 预处理器指令,因此没有办法让宏的定义生成 #define 来防止 if 被重新生成。您必须以某种方式使用单独的预处理器控件来处理它:

#define CLASS_GENERATOR_MACRO(x, y, z) ...defines class x with attributes y, z...

#ifndef GENERATED_CLASS_A
#define GENERATED_CLASS_A
CLASS_GENERATOR_MACRO(a, int, vector<std::string>);
#endif /* GENERATED_CLASS_A */

但是,没有任何东西可以自动强制仅使用一次 CLASS_GENERATOR_MACRO 来创建类 a。也就是说,该文件还可以包含:

CLASS_GENERATOR_MACRO(a, double, double);

并且编译器会提示类的重新定义(如果两者出现在同一范围内)。

宏可以生成 _Pragma 的调用。您的系统极有可能提供了可以提供帮助的编译指示。但是很可能没有使用 pragma 的可移植解决方案。

关于c++ - 避免重新定义宏定义的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11302455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com