ios - 如何从 swift 读取 C 全局变量?

标签 ios c swift

我想在 C 中获取全局变量并在 swift 中使用它们。

这是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;
    }
}

这是 MySwift2-Bridging-Header.h

#include "Csource.h"

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

这是 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
}

如何在 C 中获取全局变量并在 swift 中使用它们?

最佳答案

您可以尝试在MySwift2-Bridging-Header.h中声明变量 extern,但我认为它不会起作用:

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

在 C 中读取或写入全局变量的一种简洁方法是使用函数来执行此操作:

/* 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
}

关于ios - 如何从 swift 读取 C 全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38138863/

相关文章:

ios - 应用程序退出时调用 Swift View 方法

ios - Blender + SceneKit(操作方法)

C:在 1970 年之前添加与操作系统无关的日期

c - c 中奇怪的 daxpy Fortran

ios - 将图像文件保存到 Swift 中的应用程序文档目录。即使部署在设备上,App 文档目录的 url 是否也会改变?

ios - 标准库对绘制和操作基本形状有什么帮助?

ios - 带有 UIDatePicker subview 的 UIActionSheet 有一个小的透视区域

ios - 未收到收据数据验证信息

c - 如何删除链接列表

ios - popover改变位置起点(原点位置)iOS9