У меня есть кусок кода, как показано нижеC код Препроцессор
Local_DATA[0] = * ((int32_T *) event_structure + 1);
Local_DATA[1] = * ((int32_T *) event_structure + 2);
Local_DATA[2] = * ((int32_T *) event_structure + 3);
Local_DATA[3] = * ((int32_T *) event_structure + 4);
Я бы сделать препроцессор как
#ifdef ABC
Local_DATA[0] = * ((int32_T *) event_structure + 1);
Local_DATA[1] = * ((int32_T *) event_structure + 2);
Local_DATA[2] = * ((int32_T *) event_structure + 3);
Local_DATA[3] = * ((int32_T *) event_structure + 4);
#else
Local_DATA[0] = ntohl (* ((int32_T *) event_structure + 1));
Local_DATA[1] = ntohl (* ((int32_T *) event_structure + 2));
Local_DATA[2] = ntohl (* ((int32_T *) event_structure + 3));
Local_DATA[3] = ntohl (* ((int32_T *) event_structure + 4));
#endif
У меня есть много строк кода, где я должен вручную выполнить это. Есть ли способ определить что-то вроде макроса?
Возможно, было бы проще убедиться, что данные всегда * в сетевом порядке байтов, тогда вам не нужен условный препроцессор. –
Не могли бы вы показать нам, что сходные и разные части каждой группы? Мы не можем показать лучший макрос, не зная, какие части являются постоянными по сравнению с переменной. – Barmar
ntohl - макрос, int32_T - тип данных и event_structure, а Local_Data - переменные. – Matt