2016-07-01 10 views
0

Ich möchte globale Variablen in C erhalten und sie in swift verwenden.Wie liest man C globale Variablen von swift?

Dies ist Csource.c

#include "Csource.h" 
#include <stdio.h> 

#define size 5 

int buf[size]; 

void add() 
{ 
    int i; 
    for(i=0;i<size;i++) 
    { 
     buf[i] = buf[i] + 1; 
    } 
} 

Dies ist MySwift2-Bridging-header.h

#include "Csource.h" 

#define size 5 
int buf[size]; 
void add(); 

und Dies ist ViewController.swift

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    add() 
    var a:Int32 = buf[0]// error Type'(Int32,Int32,Int32,Int32,Int32)'has no subscript members 
} 

Wie kann ich globale bekommen Variablen in C und verwenden sie in swift?

+0

Sie in Ihrer C-Datei veröffentlichen? – Dershowitz123

+0

Gibt es Zugriffsmodifizierer in C? Wie kann ich öffentlich hinzufügen? –

Antwort

0

Sie können versuchen, in MySwift2-Bridging-Header.h Variable extern zu erklären, aber ich glaube nicht, es funktioniert:

#define size 5 
extern int buf[size]; 
void add(); 

Eine saubere Art und Weise eine globale Variable in C zu lesen oder schreiben sind Funktionen zu machen, es zu tun :

/* Csource.c: */ 

int get_buf(int i) 
{ 
    if (i >= 0 && i < 5) 
     return buf[i]; 
    else 
     return 0; 
} 

void set_buf(int i, int value) 
{ 
    if (i >= 0 && i < 5) 
     buf[i] = value 
} 
+0

Danke. Dieser Weg ist sauber. –