LINUX.ORG.RU

История изменений

Исправление SZT, (текущая версия) :

Типа

#define MACRO(a) \
do{ \
  switch(sizeof(#a)) \
  { \
    case 5: func(1, hex_to_char(#a[2], #a[3])); break; \
    case 7: func(2, hex_to_char(#a[2], #a[3]), hex_to_char(#a[4], #a[5]));\
 итд
  } \
case 5 для «0x??» - четыре символа и нуль-терминирующий байт.

case 7 для «0x????» - шесть символов и нуль-терминирующий байт.

Из строки выковыриваем две буквы и конвертим в один байт некоей функцией hex_to_char, которую думаю ясно как написать. Если это дело все заинлайнит компилятор, проблем с оверхедом не будет.

Исправление SZT, :

Типа

#define MACRO(a) \
do{ \
  switch(sizeof(#a)) \
  { \
    case 5: func(1, hex_to_char(#a[2], #a[2])); break; \
    case 7: func(2, hex_to_char(#a[2], #a[3]), hex_to_char(#a[4], #a[5]));\
 итд
  } \
case 5 для «0x??» - четыре символа и нуль-терминирующий байт.

case 7 для «0x????» - шесть символов и нуль-терминирующий байт.

Из строки выковыриваем две буквы и конвертим в один байт некоей функцией hex_to_char, которую думаю ясно как написать. Если это дело все заинлайнит компилятор, проблем с оверхедом не будет.

Исправление SZT, :

Типа

#define MACRO(a) \
do{ \
  switch(sizeof(#a)) \
  { \
    case 5: func(1, hex_to_char(#a[2], #a[2])); break; \
    case 7: func(1, hex_to_char(#a[2], #a[3]), hex_to_char(#a[4], #a[5]));\
 итд
  } \
case 5 для «0x??» - четыре символа и нуль-терминирующий байт.

case 7 для «0x????» - шесть символов и нуль-терминирующий байт.

Из строки выковыриваем две буквы и конвертим в один байт некоей функцией hex_to_char, которую думаю ясно как написать. Если это дело все заинлайнит компилятор, проблем с оверхедом не будет.

Исправление SZT, :

Типа

#define MACRO(a) \
do{ \
  switch(sizeof(#a)) \
  { \
    case 5: func(1, hex_to_char(#a[2], #a[2])); break; \
    case 7: func(1, hex_to_char(#a[2], #a[3]), hex_to_char(#a[4], #a[5]));\
 итд
  } \
case 5 для «0x??» - четыре символа и нуль-терминирующий байт.

case 7 для «0x????» - четыре символа и нуль-терминирующий байт.

Из строки выковыриваем две буквы и конвертим в один байт некоей функцией hex_to_char, которую думаю ясно как написать. Если это дело все заинлайнит компилятор, проблем с оверхедом не будет.

Исходная версия SZT, :

Типа

#define MACRO(a) \
do{ \
  switch(sizeof(#a)) \
  { \
    case 5: func(1, hex_to_char(#a[2], #a[2])); break; \
    case 7: func(1, hex_to_char(#a[2], #a[3]), hex_to_char(#a[4], #a[5]));\
 итд
  } \
case 5 для «0x??» - четыре символа и нуль-терминирующий байт.

case 7 для «0x????» - четыре символа и нуль-терминирующий байт.

Из строки выковыриваем две буквы и конвертим в байт некоей функцией hex_to_char которую думаю ясно как написать. Если єто дело все заинлайнит компилятор, проблем не будет.