Bir an için bu işaretçiyi, referans alma ve hata mesajını anladığımı düşündüm, ama şimdi tekrar güvendim. Operatör önceliği nedeniyleBir bayt dizisindeki (referans olarak iletilen) öğelerin tamsayı değerleriyle karşılaştırılması
typedef NS_ENUM (uint8_t, ControlCode) {
CC_NONE = 0x00,
CC_START = 0x01,
CC_END = 0x02,
};
- (void)testReferencingAnArray
{
uint8_t msgBytes[3];
msgBytes[0] = CC_START;
msgBytes[1] = 3;
msgBytes[2] = CC_END;
XCTAssertEqual(msgBytes[0], CC_START);//These three tests pass
XCTAssertEqual(msgBytes[1], 3);
XCTAssertEqual(msgBytes[2], CC_END);
uint8_t *msgBytes_pointer = msgBytes;
[self evaluate:&msgBytes_pointer];
}
- (void)evaluate:(uint8_t **)msgBytes_pointer
{
XCTAssertEqual(*msgBytes_pointer[0], CC_START); //Test passes
XCTAssertEqual(*msgBytes_pointer[1], 3);
//Test fails with ("<11>") is not equal to ("3")
XCTAssertEqual(*msgBytes_pointer[2], CC_END);
//Test fails with ("<00>") is not equal to ("<02>")
}
gerek yok? –
@FiddlingBits Bunu düşünebilirsiniz, fakat hayır, http://stackoverflow.com/questions/30618860/pass-uint8-t-array-to-method adresine göre değil. –
Değerlendirmeyi daha net hale getirmek için kodu düzenledim: bir diziye bir işaretçi bekler. Diziyi başvuruyla geçirebilirsiniz, ancak dizideki öğeler üzerinde karşılaştırma yapamazsınız. –