Как считывать макрос #define в C?

#arrays #c #macros

#массивы #c #макросы

Вопрос:

У меня нет опыта в C, и у меня есть вопрос. Я хотел спросить, как считывать шестнадцатеричные числа и попадать в массив

 #define configMAC_ADDR                
{                                      
    0x02, 0x12, 0x13, 0x10, 0x15, 0x11  
}
  

Ответ №1:

Макрос такой же, как и запись { 0x02, 0x12, 0x13, 0x10, 0x15, 0x11 } . Итак, там, где вы обычно записывали бы этот список инициализаторов в своем исходном коде, напишите configMAC_ADDR вместо этого. В данном случае это просто замена текста.


Символ может появиться в любом месте кода C и означает разрыв строки исходного кода. Вы можете использовать его, чтобы разбить длинную строку кода на несколько и заставить компилятор по-прежнему обрабатывать их как одну строку, поэтому он обычно используется для макросов. Без этого вам пришлось бы записать макрос как:

 #define configMAC_ADDR { 0x02, 0x12, 0x13, 0x10, 0x15, 0x11 }
  

Что эквивалентно на 100%, но в некоторых случаях менее читаемо.

Комментарии:

1. … и «список инициализаторов», безусловно, правильный термин. Текст замены макроса не может рассматриваться как представляющий массив, хотя он может быть использован для его инициализации.

2. Да… расширенная задача инициализации массива целых чисел и последующей замены списка инициализаторов одним словом намеренно оставлена читателю в качестве упражнения.