hsp*_*pim 4 c loops for-loop c-preprocessor
#include <stdio.h>
#define UNITS {'*', '#', '%', '!', '+', '$', '=', '-'}
#define PrintDigit(c, d) (for (i=0; i < c ; i++)putchar(unit[d]);)
char unit[] = UNITS;
//void PrintDigit(c, element) {
// int i;
// for (i=0; i < c ; i++)
// putchar(unit[element]);
//}
int main( ) {
int i, element=4;
PrintDigit(10, element);
putchar('\n');
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在这里的功能PrintDigit()按预期工作.当试图将函数转换为#define时,gcc不断在for循环中抛出语法错误.知道问题是什么吗?
您已将for循环括在括号中,您需要将其删除.
更改
#define PrintDigit(c, d) (for(i=0; i < c ; i++)putchar(unit[d]);)
Run Code Online (Sandbox Code Playgroud)
至
#define PrintDigit(c, d) for(i=0; i < c ; i++)putchar(unit[d]);
Run Code Online (Sandbox Code Playgroud)
编辑:
这样做的原因是C语法不允许statement(iterative在这种情况下的语句)在括号内但允许expression.
您可以在这里查看C语法.