我目前正在尝试构建一个计算值的程序,并将这些值输出到文本文件中。在编译时,我收到以下错误:
'ISO C90禁止混合减速和代码'
我的编译器是Quincy 2005,它正在标记第11行(int f = 10;)作为问题:
#include <stdio.h>
int main()
{
FILE *output;
output = fopen("inductor.txt","a+");
int f=10;
float l, ir, realir;
printf("What is your inductor value (mH)\n");
scanf("%f", &l);
while (f< 10000000){
ir=((2*3.141)*f*l);
realir = ir/1000;
printf("If Frequency = %d Hz" ,f);
printf(" Inductive reactance= %f Ohms\n",realir);
fprintf(output, "%d Hz : %f Ohms\n ", f, realir);
f=f*10;
}
fclose(output);
return 0;
}
令人讨厌的是,改变编译器不是一种选择。
答案 0 :(得分:3)
我相信它说你需要先声明所有变量,然后再编码。
E.g:
FILE *output;
int f=10;
float l, ir, realir;
output = fopen("inductor.txt","a+");
printf("What is your inductor value (mH)\n");
答案 1 :(得分:1)
将output = fopen("inductor.txt","a+");
向下移动到其他变量声明的下方。您必须首先声明所有变量,然后使用它们。
答案 2 :(得分:0)
根据之前的答案,有两种方法可以否定这一点,因为ISO C90不允许混合变量声明和代码。 已经提到了一种方法:按建议移动变量声明。
FILE *output;
int f=10;
float l, ir, realir;
output = fopen("inductor.txt","a+");
// More code
还有另一种方式。根据ISO C90,您只能在块打开{
后在代码中声明变量。由于您可以随时自由地引入代码块,因此如果您不想更改代码,只需启动一个块并将代码放在那里。请注意,以这种方式声明的变量仅在包含它们的块中有效。我强烈推荐第一个选项。
FILE *output;
output = fopen("inductor.txt","a+");
{
int f=10;
float l, ir, realir;
// More code on this variables.
}
// Variables declared in the block previously will not be valid here.