gpt4 book ai didi

c++ - 如何在#define 中#import

转载 作者:行者123 更新时间:2023-11-30 03:28:29 24 4
gpt4 key购买 nike

我正在围绕 C++ 库开发一个 Objective-C 包装器,我既不控制也不修改其源代码。我导入的 header 会触发各种编译器警告,因此我开始执行以下操作:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-id-macro"
#pragma clang diagnostic ignored "-Wstrict-prototypes"
#import "dll.hpp"
#pragma clang diagnostic pop

效果很好,但要保留它 DRY ,我想为这些导入中的每一个定义一个宏,并内置忽略警告编译指示(只有几个这样的 header )。

这样,在每个文件中,我都可以在顶部进行这样的调用,并且我会在每个 header 的一个位置放置所有被忽略的警告。

ImportDllHpp()

但是,从 #define 中调用 #import 并不是那么容易。我已经很接近了,使用 this answer让编译指示工作。但是是否有类似 _Pragma 的功能用于 #import 或其他实现方式?

这是我目前所拥有的:

#define _stringify(a) #a

#define ImportRarHpp() \
_Pragma( _stringify( clang diagnostic push ) ) \
_Pragma( _stringify( clang diagnostic ignored "-Wreserved-id-macro" ) ) \
_Pragma( _stringify( clang diagnostic ignored "-Wstrict-prototypes" ) ) \
#import "dll.hpp"
_Pragma( _stringify( clang diagnostic pop ) )

最佳答案

如果你能做到这一点,我会感到非常惊讶。

我建议最简单的解决方案是让您简单地定义自己的文件,名称类似于 my-dll.hpp,它包含

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-id-macro"
#pragma clang diagnostic ignored "-Wstrict-prototypes"
#import "dll.hpp"
#pragma clang diagnostic pop

那样的话,任何想要导入 dll.hpp 的人都将只需要 #import "my-dll.hpp" 并且相应的警告将被抑制。

关于c++ - 如何在#define 中#import,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46553710/

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