gpt4 book ai didi

c - 意外标记 `(' 附近出现语法错误 --------我的程序编译良好,但无法运行

转载 作者:行者123 更新时间:2023-11-30 18:31:28 25 4
gpt4 key购买 nike

这是运行时错误:

    @user:~/workspace$ gcc compute.c
compute.c: In function ‘main’:
compute.c:59:1: error: ‘for’ loop initial declarations are only allowed in C99 mode
for(int i=0;i<5;i++){
^
compute.c:59:1: note: use option -std=c99 or -std=gnu99 to compile your code
user:~/workspace$ gcc compute.c -std=c99
l user:~/workspace$ ./compute.c
./compute.c: line 3: syntax error near unexpected token `('
./compute.c: line 3: `int main()'

我不知道如何修复它。我认为我的代码没问题。

当我编译它时,它是完美的,但当我运行它时,它不起作用。

这是我的代码:

#include<stdio.h>

int main()
{
typedef struct{
float real;
float virtual;
}component;

component construtor(int real, int virtual) {
component c;
c.real=real;
c.virtual=virtual;
return c;
}

component add(component c1, component c2){
component new;
new.real=c1.real+c2.real;
new.virtual=c1.virtual+c2.virtual;
return new;
}

component minus(component c1, component c2){
component new;
new.real=c1.real-c2.real;
new.virtual=c1.virtual-c2.virtual;
return new;
}

component multiply(component c1, component c2){
component new;
new.real=c1.real*c2.real-c1.virtual*c2.virtual;
new.virtual=c1.real*c2.virtual+c1.virtual*c2.real;
return new;
}

float real(component c){
return c.real;
}

float virtual(component c){
return c.virtual;
}

component division(component c1, component c2){
component new;
new.real = (c1.real*c2.real+c1.virtual*c2.virtual)/(c2.real*c2.real+c2.virtual*c2.virtual);
new.virtual = (c1.virtual*c2.real-c1.real*c2.virtual)/(c2.real*c2.real+c2.virtual*c2.virtual);
return new;
}

component conjugate(component c){
c.virtual=(-1)*c.virtual;
return c;
}

component test_data[5];
for(int i=0;i<5;i++){
scanf("enter the real part: %f\n",&test_data[i].real);
scanf("enter the virtual part: %f\n",&test_data[i].virtual);
}

component add_result=add(test_data[0],test_data[1]);
component minus_result=minus(test_data[2],test_data[3]);
component multiply_result=multiply(test_data[4],test_data[5]);
component division_result=division(test_data[6],test_data[7]);
component conjugate_result=conjugate(test_data[8]);

printf("Add two components: %f+%f i",real(add_result),virtual(add_result));
printf("Minus two components: %f+%f i", real(minus_result),virtual(minus_result));
printf("Multiply two components: %f+%f i", real(multiply_result),virtual(multiply_result));
printf("Division two components: %f+%f i", real(division_result),virtual(division_result));
printf("Conjugate of a components: %f+%f i", real(conjugate_result),virtual(conjugate_result));

return 0;
}

我该如何解决这个问题?

最佳答案

您使用的编译器不支持 for 循环中的声明,或者您缺少开关:

for(int i=0;i<5;i++){

这样做:

int i;
for(i=0;i<5;i++){ //....

根据您的评论,您无法运行 .c 文件,您必须先编译它,我认为您得到了语法错误。

执行gcc -Wall yourFile.c -o yourFile -std=C99来编译它(或者更简单地,make yourFile)。然后就可以./ex1来运行程序了。

关于c - 意外标记 `(' 附近出现语法错误 --------我的程序编译良好,但无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22834968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com