在 Objective-C 中使用枚举作为外部文件中的参数?

发布于 2024-08-16 17:43:02 字数 458 浏览 3 评论 0原文

我在文件 foo.h 中有一个名为 RandomEnum 的枚举:

// foo.h
typedef enum RandomEnum {
  ran_1 = 0,
  ran_2
} RandomEnum;

在另一个文件 bar.h 中,我尝试使用 RandomEnum 作为参数类型:

// bar.h
#import "foo.h"

@interface bar : NSObject {}
  -(RandomEnum)echo:(RandomEnum)ran;
@end

但是,编译器似乎无法识别 RandomEnum。这样做可能吗?

编译器错误:

error: expected ')' before 'RandomEnum'

编辑:添加了 foo.h 的代码以进行澄清

I have an enum named RandomEnum in file foo.h:

// foo.h
typedef enum RandomEnum {
  ran_1 = 0,
  ran_2
} RandomEnum;

In another file, bar.h, I'm trying to use RandomEnum as a parameter type:

// bar.h
#import "foo.h"

@interface bar : NSObject {}
  -(RandomEnum)echo:(RandomEnum)ran;
@end

However, the compiler doesn't seem to recognize RandomEnum. Is doing this even possible?

Compiler Error:

error: expected ')' before 'RandomEnum'

Edit: Added code for foo.h for clarification

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

雾里花 2024-08-23 17:43:02

C 构造 enum RandomEnum 没有定义名为 RandomEnum 的类型 — 它定义了名为 enum RandomEnum 的类型。为了能够只为类型编写 RandomEnum,您需要使用 typedef。

The C construct enum RandomEnum does not define a type called RandomEnum — it defines a type called enum RandomEnum. To be able to write just RandomEnum for the type, you need to use a typedef.

吐个泡泡 2024-08-23 17:43:02

事实证明这毕竟是可能的。我的问题与奇怪的交叉包含有关,这些交叉包含不是直接的,但仍然存在。

在给定的示例中,foo.h 包含 thing.h,其中包含 thing.h,后者包含 bar.h。这种交叉依赖最终导致了问题。

不过,还是很高兴了解编译器错误。感谢您的回复!

It turns out this is possible after all. My problem had to do with odd cross-includes that weren't direct, but were still present.

In the given example, foo.h included thing.h which included something.h which included bar.h. This cross dependency is what ended up being the problem.

Still, good to know for compiler bugs. Thanks for the responses!

与风相奔跑 2024-08-23 17:43:02

正如 @Chuck 所说,如果您不想声明 typedef,那么这样做会起作用:

-(RandomEnum)echo:(enum RandomEnum)ran;

As @Chuck said, it will work if you do this if you don't want to declare a typedef:

-(RandomEnum)echo:(enum RandomEnum)ran;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文