2015-12-09 12 views
5

Ich versuche, ein Befehlszeilenprogramm mit Fehlercodes in Swift 2.2 auf Linux zu beenden. Ich habe versucht, die Lösung in this question, aber bekomme immer noch eine unaufgelöste Kennung. Ein einfacher Test-Skript, das das Problem repliziert:Swift 2.2 unter Linux, "Verwendung von unaufgelösten Identifier 'Exit'"

$> cat exit_test.swift 
import Foundation 

guard 0 == 1 else { exit(0) } 

bekomme ich folgende Fehlermeldung:

$> swift exit_test.swift 
exit_test.swift:3:21: error: use of unresolved identifier 'exit' 
guard 0 == 1 else { exit(0) } 

Es scheint, dass exit wird nicht importiert mehr zusammen mit Foundation, aber ich bin nicht sicher, wo man Suchen Sie als nächstes nach einem Weg, um mit einem bestimmten Fehlercode zu beenden. Ich bin mit Swift 2.2-dev:

$> swift --version 
Swift version 2.2-dev (LLVM 46be9ff861, Clang 4deb154edc, Swift 778f82939c) 
Target: x86_64-unknown-linux-gnu 
+0

'exit' ist ein Import von' Darwin' als Teil der C-Standardbibliothek. Es gibt kein gleichwertiges Fundament. – JAL

+1

Auf Apple-Plattformen importiert Foundation "Darwin" transitiv. Unter Linux ist das (grobe) Äquivalent zum Darwin-Modul "Glibc" und Foundation kann es für Sie importieren oder nicht. – rickster

+0

Dies ist unter Linux. "Import Darwin" wirft "kein solches Modul Darwin" auf. – Kellen

Antwort

8

exit(3) grundlegende Unix (wie) API ist. Auf Apple-Plattformen werden solche Dinge vom Modul Darwin zur Verfügung gestellt, und da Cocoa stark von diesen Dingen abhängt, bekommt import Foundation automatisch auch Darwin.

Unter Linux sind grundlegende Unix (like) APIs im Glibc Modul, und import Foundation importiert das nicht transitiv für Sie. Also, um exit(3) und andere solche Dinge zu bekommen, müssen Sie selbst import Glibc.

Verwandte Themen