У меня есть код C. Мне нужна помощь, чтобы перевести его на код Delphi.C header to delphi
1)
/*
* Color is packed into 16-bit word as follows:
*
* 15 8 7 0
* XXggbbbb XXrrrrgg
*
* Note that green bits 12 and 13 are the lower bits of green component
* and bits 0 and 1 are the higher ones.
*
*/
#define CLR_RED(spec) (((spec) >> 2) & 0x0F)
#define CLR_GREEN(spec) ((((spec) & 0x03) << 2) | ((spec & 0x3000) >> 12))
#define CLR_BLUE(spec) (((spec) >> 8) & 0x0F)
2)
#define CDG_GET_SCROLL_COMMAND(scroll) (((scroll) & 0x30) >> 4)
#define CDG_GET_SCROLL_HOFFSET(scroll) ((scroll) & 0x07)
#define CDG_GET_SCROLL_VOFFSET(scroll) ((scroll) & 0x0F)
В качестве побочного примечания: заголовок c как ошибка: '(spec & 0x3000)' должен быть '((spec) & 0x3000)' – CodesInChaos
Для жизни я не могу представить, почему кто-то выбирал для использования макроса для этого. Когда вы исправляете ошибку, которую заметили CodeInChaos, которые так легко сделать с помощью макросов, вы получаете тот факт, что '(spec)' дважды оценивается в 'CLR_GREEN'. Если вы хотите определить функцию, определите функцию! –
@DavidHeffernan Но это быстрее! 11 Компиляторы, которые могут встроить функции, неслыханны. – CodesInChaos