【发布时间】:2014-07-25 21:36:52
【问题描述】:
抱歉标题,我无法用几句话来描述我的问题。
我已经知道 swift 可以使用用 c 编写的 struct。例如
在 Bridging-Header.h 中
typedef struct {
int x;
int y;
} Pointer;
那我就可以直接使用Pointer了。
但在我的例子中,我有一个用 C 编写的库。有许多带有隐藏实现的结构。例如:
在 Briding-Header.h
typedef struct Pointer Pointer;
我不能再使用指针了,类型未知。在我的库中,指针用作
create_pointer(Pointer **pointer);
感谢任何帮助!
P.S 我没有定义结构指针的 .h 文件。关于指针的所有细节都是隐藏的,通过函数访问它们,例如
int getx(Pointer *pointer);
这是我的完整测试代码:
user_input.c
#include <stdio.h>
#include "user_input.h"
struct Pointer {
int x;
int y;
};
void get_user_input(int *user_input) {
scanf("%i", user_input);
}
void init_pointer(Pointer *point) {
point->x = 20;
point->y = 20;
}
user_input.h
#ifndef __user_input_h__
#define __user_input_h__
typedef struct Pointer Pointer;
void init_pointer(Pointer *p);
#endif
Bridging-Header.h
#include "user_input.h"
main.swift
import Foundation
var pointer:Pointer = Pointer(x:10, y:20)
Xcode 给我这个错误:指针未定义
【问题讨论】:
-
作为我更新答案的附录,似乎结构可能有问题。我一直在查看 Xcode 种子中的 Swift 文档,但我找不到任何明确谈论初始化 typedef 结构和使用它们的内容。我留下我的答案,希望它能帮助尝试调用 C 函数的人,但结构似乎仍然是一个灰色区域。