Scusate per il titolo, non riesco a trovare le parole per descrivere la mia domanda in poche parole.Uso rapido c struct
So già che swift può usare struct scritto in c. Ad esempio
colmare-header.h
typedef struct {
int x;
int y;
} Pointer;
quindi posso utilizzare direttamente Pointer.
Ma nel mio caso, ho una libreria scritta in C. Ci sono molte strutture con lo strumento nascosto. Per esempio:
In bridging-header.h
typedef struct Pointer Pointer;
non posso usare l'indicatore più, ha ottenuto tipo sconosciuto. Nella mia biblioteca puntatore viene utilizzato come
create_pointer(Pointer **pointer);
Ogni aiuto è apprezzato!
P.S Non ho il file .h che definisce struct Pointer. Tutti i dettagli sul puntatore è nascondere, accedervi per funzione, per esempio
int getx(Pointer *pointer);
Ecco il mio codice di prova completa:
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 darmi questo errore: Pointer undefined
Come un addendum alla mia risposta aggiornato, sembra che le strutture possono essere problematico. Ho esaminato i documenti Swift nel seme Xcode e non riesco a trovare nulla che parla esplicitamente di inizializzare le strutture tipate e di utilizzarle. Lascio la mia risposta nella speranza che possa aiutare qualcuno a cercare di chiamare le funzioni C, ma le strutture sono ancora un'area grigia, a quanto pare. – alesplin