- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
#include <stdio.h>
#include <stdint.h>
#include <string.h>
struct foo {
uint16_t a;
uint16_t b;
uint16_t c;
};
struct posted {
uint8_t **ptr;
} posted = {
.ptr = (uint8_t *[]) {(uint8_t *)&(struct foo) {.a = 0x1011, .b = 0x1213, .c = 0x1415},
(uint8_t *)&(struct foo) {.a = 0x1617, .b = 0x1819, .c = 0x2021},
NULL}
};
int main(void)
{
for(uint8_t *ptr = &(*posted.ptr)[0];; ptr++) {
static size_t idx;
printf("%x ", *ptr);
if(ptr == sizeof(struct foo) - 1 + *(idx + posted.ptr)) {
idx++;
ptr = *(idx+posted.ptr);
if(ptr == NULL) break;
}
}
return 0;
}
Комментарии (0) RSS
Добавить комментарий