这里给出的代码在由g ++编译时运行正常但在使用gcc进行编译时出错.显然,这对于C++是正确的,但不适用于C.请帮我纠正C的语法.
# include <stdio.h>
typedef struct demo
{
int arr[20], i;
void setvalue(int num)
{for(i=0;i<20;i++)arr[i]=num;}
void printvalue()
{for(i=0;i<20;i++)printf("%d ",arr[i]);}
} example;
int main()
{
example e;
e.setvalue(100);
e.printvalue();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误日志:
stov.c:7:2: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘{’ token
stov.c: In function ‘main’:
stov.c:18:3: error: ‘example’ has no member named ‘setvalue’
stov.c:19:3: error: ‘example’ has no member named ‘printvalue’
Run Code Online (Sandbox Code Playgroud)
cni*_*tar 10
您不能在C中使用方法(该结构中的函数).解决这个问题的方法不止一种,但我只是将对象作为函数的第一个参数传递:
void setvalue(struct demo *d, int num)
{
int i;
for(i = 0; i < 20; i++)
d->arr[i] = num;
}
/* ... */
setvalue(&e, 100);
Run Code Online (Sandbox Code Playgroud)