Например я могу сделать в структуре или в классе вот так.
unsigned int ax:16;
Мне надо сделать al и ah, каждый по одному байту и ещё чтобы они были указателями. Такое вроде нельзя сделать, но всё же хочу уточнить. И ещё чтобы al и ah указывали на нужное смещение в ax.
Если вам нужны указатели, то например, так:
#include <stdio.h>
#include <stdint.h>
void
setalah (uint16_t *p, uint8_t **ppl, uint8_t **pph)
{
uint8_t *pp = (uint8_t *)p;
int v = 1;
char *low = (char *)&v;
if (*low) { // dynamic check endianness (low or big-endian system)
// well, may be better to do as #ifdef ??? It's your choice
*ppl = pp;
*pph = pp + 1;
} else {
*pph = pp;
*ppl = pp + 1;
}
}
#define ah (*pah)
#define al (*pal)
int
main (int ac, char *av[])
{
// ***** вот этот фрагмент -- ответ на вопрос
uint16_t a;
uint8_t *pal, *pah;
setalah(&a, &pal, &pah);
// ***** конец фрагмента
printf("&a: %p pal: %p pah: %p\n",
(void *)(&a), pal, pah);
int v;
while (scanf("%d", &v) == 1) {
a = v;
int vl = *pal, vh = *pah;
printf("v: 0x%02x vl: 0x%02x vh: 0x%02x\n", v, vl, vh);
printf("ah: %d al: %d\n", ah, al);
}
}
А для доступа к памяти по указателю, как к переменной (по имени) всегда можно написать простые #define
.
P.S.
gnu компилятор не сомневается, что это программа на С++
Создавать с помощью union
нежелательно, так как компилятор может с оптимизировать и убрать весь код, который не нужен. Структура битовых полей тоже не очень удобна, так как адрес будет не доступен. Компилятор может создать реализацию на свой вкус. Проще сделать как делают все сишники:
# include<iostream>
class R{
public :
uint64_t volatile & rx(){return *(uint64_t volatile *)r;}
uint32_t volatile & ex(){return *(uint32_t volatile *)r;}
uint16_t volatile & x(){return *(uint16_t volatile *)r;}
uint8_t volatile & h(){return *(uint8_t volatile *)(r+1);}
uint8_t volatile & l(){return *(uint8_t volatile *)r;}
private:
volatile uint8_t r[8];
};
int main(){
R r;
r.l()=1;
r.h()=1;
std::cout<<"r.x="<<r.x()<<"\n"; }
итого:
$ ./a.out
r.x=257
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Всем приветКак реализовать в Jquery, чтобы при каждом клике аудиофайл проигрывался всего один раз
Есть страница корзины, на странице товары и их параметры формируются в таблицу table
Всем приветПоявилась проблемка: nav выходит за пределы div при масштабирование окна браузера