How to call C from Swift? How to call C from Swift? c c

How to call C from Swift?


Yes, you can of course interact with Apple's C libraries. Here is explained how.

Basically, the C types, C pointers, etc., are translated into Swift objects, for example a C int in Swift is a CInt.

I've built a tiny example, for another question, which can be used as a little explanation, on how to bridge between C and Swift:

main.swift

import Foundationvar output: CInt = 0getInput(&output)println(output)

UserInput.c

#include <stdio.h>void getInput(int *output) {    scanf("%i", output);}

cliinput-Bridging-Header.h

void getInput(int *output);

Here is the original answer.


The compiler converts C API to Swift just like it does for Objective-C.

import Cocoalet frame = CGRect(x: 10, y: 10, width: 100, height: 100)import Darwinfor _ in 1..10 {    println(rand() % 100)}

See Interacting with Objective-C APIs in the docs.


Just in case you're as new to XCode as me and want to try the snippets posted in Leandro's answer:

  1. File->New->Project
  2. choose Command Line Tool as a project preset and name the project "cliinput"
  3. right-click in the project navigator (the blue panel on the left) and choose "New File..."
  4. In the drop down dialog name the file "UserInput". Uncheck the box "Also create a header file". Once you click "Next" you will be asked if XCode should create the Bridging-Header.h file for you. Choose "Yes".
  5. Copy & paste the code from Leandro's answer above. Once you click on the play button it should compile and run in the terminal, which in xcode is built-in in the bottom panel. If you enter a number in the terminal, a number will be returned.