typedef struct TAGCommonHeader
{
uint8_t prefix[4];
uint8_t data[0];
} CommonHeader;
typedef struct TAGDataHeader
{
uint8_t hash[4];
uint32_t dataSize;
uint8_t data[0];
} DataHeader;
void ParseData(uint8_t* data, size_t length)
{
CommonHeader* commonHeader = (CommonHeader*)data;
if(commonHeader->prefix[0] == 'P' && commonHeader->prefix[1] == 'N' && commonHeader->prefix[2] == 'G' && commonHeader->prefix[3] == ' ')
{
DataHeader* dataHeader = (DataHeader*)commonHeader->data;
for(uint32_t i = 0; i < dataHeader->dataSize; ++i)
{
dataHeader->data[i];
}
}
}
이런 기능 나무위키에서 있다는 것만 들었지 실제로 쓰는 예를 본 적이 없는데 회사에서 처음 봄
이게 무슨 기능인데
zero-length array 말하는 거 같음
ㅇㅎ
오우 신기하네
C로 파이썬을?
찾아보니 표준에선 안되고 gcc에선 지원하네
c99에서는 표준 된거 아님?
c99에선 data[0] 말고 data[]로 써야 하는거 아닌가
ㅇㅇ 저건 c99 미만에서 쓰던거
?????
지식이 늘었다
노근본 타입 세이프티 덜덜