Передать одиночный символ в gcc как определение - PullRequest
0 голосов
/ 04 октября 2011

У меня есть файл version.c со следующей строкой:

const uint8_t ID_SoftwareId[]   = { 'A', 'B', '0', '1', '0', '\0'};

Я хочу передать A и B в этот файл через определение.Я устал несколько thigs , но обычно я получаю Too many initializers предупреждение от gcc.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 04 октября 2011

Подтверждение концепции:

#define TOKENIZE(x) #x
#define SINGLECHAR(x) (*(TOKENIZE(x)))

int main()
{
    char c = SINGLECHAR(DEFINITION);
    return 0;
}

Скомпилировано и запущено:

cpp -DDEFINTION=Q test.c

Выход

# 1 "test.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "test.c"



int main()
{
 char c = (*("Q"));
 return 0;
}
0 голосов
/ 04 октября 2011

Вы пробовали просто:

const uint8_t ID_SoftwareId[]   = { DEFA, 'B', '0', '1', '0', '\0'};

Тогда:

gcc -DDEFA=\'A\' ...

WorksForMe TM .

...