Библиотека побитовой обработки для ANSI C

статические функции являются по существу функциями помощника общественности (т.е. представленный) функции. Так IMO, Ваши модульные тесты должны назвать открытый интерфейс с исходными данными, которые осуществляют все пути в статической функции.

вывод (возвращаемые значения / побочные эффекты) государственной функции должен использоваться для тестирования эффекта помех.

Это означает, что у Вас должны быть соответствующие тупики, чтобы 'поймать' эти побочные эффекты. (например, если файл вызовов функции IO, необходимо обеспечить тупики для переопределения, они регистрируют функции lib IO). Лучший способ сделать это путем создания каждого набора тестов отдельным проектом/исполняемым файлом и постараться не связываться с любыми внешними функциями lib. Можно дразнить даже C функции, но это не стоит усилия.

Так или иначе, это - подход, который я использовал до сих пор, и он работает на меня. Удача

5
задан Elazar Leibovich 24 August 2009 в 12:17
поделиться

4 ответа

Похоже, это проблема, которую я решал в своем вопросе

Алгоритм для копирования N бит в произвольной позиции из одного int в другое

Есть несколько различных альтернатив, с самым быстрым было решение для сборки от fnieto.

2
ответ дан 18 December 2019 в 11:59
поделиться

Я считаю, что это "слишком просто" для библиотеки; большинство функций будет состоять только из одного или двух операторов, что сделало бы накладные расходы на вызов библиотечной функции немного больше, чем допускают типичные программисты на C. :)

Тем не менее, всегда превосходный glib имеет две наиболее сложные бит-ориентированные функции: g_bit_nth_lsf () и g_bit_nth_msf () . Они используются для поиска индекса первого набора битов, начиная с самого младшего или самого высокого бита соответственно.

7
ответ дан 18 December 2019 в 11:59
поделиться

You will come a long way with the following macros:

#define SETBITS(mem, bits)      (mem) |= (bits)
#define CLEARBITS(mem, bits)    (mem) &= ~(bits)
#define BIN(b7,b6,b5,b4, b3,b2,b1,b0)                      \
(unsigned char)(                                           \
    ((b7)<<7) + ((b6)<<6) + ((b5)<<5) + ((b4)<<4) +        \
    ((b3)<<3) + ((b2)<<2) + ((b1)<<1) + ((b0)<<0)          \
)

Then you can write

int a = 0x123;
SETBITS(a, BIN(0,0,0,1, 1,1,1,0));
printf("0x%x", a); // should be 0x13F
3
ответ дан 18 December 2019 в 11:59
поделиться

Возможно алгоритмы из книги "FXT" (ссылка внизу страницы) будут полезны.

3
ответ дан 18 December 2019 в 11:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: