Отсутствует частичный модификатор при объявлении .. существует другое частичное объявление этого типа ". Я новичок и просто слежу за книгой

Наименьшая единица, адресуемая в C, всегда является байтом (называемым char в C). Вы не можете получить доступ напрямую. Самый близкий способ получить доступ к битам - это определить тип данных, называемый bitpointer, и определить для него некоторые функции или макросы:

#include <stdbool.h>

typedef struct bitpointer {
    unsigned char *pb; /* pointer to the byte */
    unsigned int bit; /* bit number inside the byte */
} bitpointer;

static inline bool bitpointer_isset(const bitpointer *bp) {
    return (bp->pb & (1 << bp->bit)) != 0;
}

static inline void bitpointer_set(const bitpointer *bp, bool value) {
    unsigned char shifted = (value ? 1 : 0) << bp->bit;
    unsigned char cleared = *bp->pb &~ (1 << bp->bit);
    *(bp->pb) = cleared | shifted;
}

Я рекомендую против союзов, потому что это , будут ли они заполнены msb-to-lsb или lsb-to-msb (см. ISO C99, 6.7.2.1p10).

13
задан default locale 29 July 2014 в 12:42
поделиться