我需要在 C++/CLI 项目中使用 C 库的一部分。我强制将 c 文件编译为 c++,问题是该库使用了很多 c++ 不允许的隐式枚举与整数比较。现在我可以正确地转换所有这些,但我希望尽可能在不修改原始库代码的情况下获得结果(因为该库仍在开发中,我希望具有即插即用功能)。有没有办法允许 C++ 隐式转换这些枚举?
最佳答案
迂腐的回答是否。
C++ 标准在这方面比 C 标准更严格,从整数到枚举数或从 void*
到 T*
的隐式转换在盒子。
您面前有几个解决方案:
- 您的编译器可能有这样的开关,编译器开关触发非标准行为(通常被视为“功能”)的情况并不少见;我不知道有这样的开关,但有很多...
- 您可以将 C 代码编译为 C(如有必要,可能链接到一个单独的库)
- 您可以编辑 C 代码,使其同时编译为 C 和 C++
- 最后,由于它是一个开发中的库,您可以要求作者确保他们的代码可以编译为 C 和 C++
关于c++ - 有没有办法允许在 C++ 中进行隐式转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25177319/