我試圖將一些C代碼轉換爲swift。 (爲什麼? - 使用CoreMIDI在OS-X的情況下,你問)快速訪問固定長度C數組的元素
C代碼是這樣的
void printPacketInfo(const MIDIPacket* packet) {
int i;
for (i=0; i<packet->length; i++) {
printf("%d ", packet->data[i]);
}
}
而且MIDIPacket這樣定義
struct MIDIPacket
{
MIDITimeStamp timeStamp;
UInt16 length;
Byte data[256];
};
我的雨燕像這樣
func printPacketInfo(packet: UnsafeMutablePointer<MIDIPacket>){
// print some things
print("length", packet.memory.length)
print("time", packet.memory.timeStamp)
print("data[0]", packet.memory.data.1)
for i in 0 ..< packet.memory.length {
print("data", i, packet.memory.data[i])
}
}
但是這給了一個編譯器錯誤
error: type '(UInt8, UInt8, .. cut .. UInt8, UInt8, UInt8)' has no subscript members
那麼我該如何取消引用固定大小數組的I'th元素呢?
哪條線#的編譯器抱怨? – Matt
這是packet.memory.data [i]行。 –
packet.memory.data表示一個元組,而不是一個數組。看到我的嘗試如何解決你在我的答案麻煩。 – user3441734