使用c宏作为变量

wor*_*wer 0 c macros

我想访问表单的几个变量:

int arr1=1;
int arr2=1;
int arr3=1;
Run Code Online (Sandbox Code Playgroud)

所以我写了

#define arr(i) arr##i
Run Code Online (Sandbox Code Playgroud)

但是下面的代码片段并没有像我期望的那样工作

#include <stdio.h>

int main(){
int arr1=1;
int arr2=1;
int arr3=1;
int j;
    for(j=1; j<3; j++)
        printf("%d",arr(j));

return 0;
}
Run Code Online (Sandbox Code Playgroud)

unw*_*ind 6

你不能做这个.C中的运行时不存在变量名.

您的宏将扩展为arrj,这是一个未定义的变量名称.使用正确的数组:

int arr[] = { 1, 1, 1 };
Run Code Online (Sandbox Code Playgroud)

然后打印arr[j],但像这样循环:

for(j = 0; j < sizeof arr / sizeof *arr; ++j)
  printf("%d\n, arr[j]);
Run Code Online (Sandbox Code Playgroud)