簡體   English   中英

我需要在 Swift 中 memset 一個 C 結構嗎?

[英]Do I need to memset a C struct in Swift?

AFAIK,在 swift 中,調用類/結構的默認初始化程序會將所有內容初始化為0nil 在 C(例如套接字編程)中,有時在使用結構體之前使用 memset 將所有內容設置為 0。 我是否也需要在 swift 中使用 memset 還是我寫的方式很好?

(順便說一句,在這種情況下,使用memset是因為除以下 2 個參數外, hints應設置為 0。非 0(垃圾等)將在調用getaddrinfo時對res產生副作用。

C:

struct addrinfo hints, *res;
int status;

memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;

status = getaddrinfo(NULL, MYPORT, &hints, &res);

迅速:

var res = UnsafeMutablePointer<addrinfo>()
var hints = addrinfo()
hints.ai_family = AF_UNSPEC
hints.ai_socktype = SOCK_STREAM

let status = getaddrinfo(nil, MYPORT, &hints, &res)

來自Xcode 6.3 發行說明

導入的 C 結構現在在 Swift 中有一個默認初始化器,可以將結構的所有字段初始化為零。

意思就是

var hints = addrinfo()

struct addrinfo所有字段初始化為零,無需調用memset()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM