Я пытаюсь передать значение переменной в макрос на C, но не знаю, возможно ли это. Пример:
#include <stdio.h>
#define CONCVAR(_n) x ## _n
int main () {
int x0, x1, x2, x3, x4, x5, x6, x7, x8, x9;
int i;
for (i = 0; i <= 9; i++) CONCVAR(i) = i*5;
return 0;
}
Здесь я пытаюсь использовать макрос для присвоения значения всем переменным x_, используя токены ##
. Я знаю, что могу легко добиться этого с помощью массивов, но это только для учебных целей.
CONCVAR(i)
заменяется на xi
, а не на x1
(если i == 1). Я знаю, как работают определения и макросы, все дело в подстановке, но я хочу знать, можно ли передать значение i вместо буквы i
в макрос.
##
, чем в использовании массивов, но я не уверен. en.wikipedia.org/wiki/C_preprocessor#Token_concatenation - person FrustratedWithFormsDesigner   schedule 16.02.2011#
и##
(см., например, код Google). - person   schedule 16.02.2011##
и макросов в целом взгляните на исходники LLVM и Clang, особенно на то, как используются файлы .def и .inc. Нет лучшего способа сделать то же самое с таким ограниченным языком, как C++. - person SK-logic   schedule 16.02.2011