используя «определение» в языке C как int и как char - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь использовать #define, например, int и char

#define name joe

Таким образом, это int, но я хочу иметь возможность распечатать этот #define и получитьслово Джо.Я знаю, что могу использовать

#define name "Joe"

Но тогда я откажусь от его "способностей int".

что я могу сделать?спасибо ребята!

1 Ответ

0 голосов
/ 25 ноября 2018

Оператор препроцессора # превращает параметр макроса в строковый литерал.Вывод:

#include <stdio.h>

#define name            Joe
#define Helper(x)       #x
#define Stringify(x)    Helper(x)

int main(void)
{
    int name = 4;
    printf("%s is %d.\n", Stringify(name), name);
}

:

Джо равен 4.

Необходимы два макроса, потому что расширение x в дляStringify будет выполняться только после применения #.Поэтому нам нужно Stringify, чтобы развернуть x, а затем Helper, чтобы получить строковый литерал.

Не используйте это в рабочем коде без уважительной причины.Играть в игры с препроцессором следует осторожно.

...