gpt4 book ai didi

c - 期待一份声明

转载 作者:行者123 更新时间:2023-11-30 19:48:53 24 4
gpt4 key购买 nike

这是我的第一个问题(对编码来说相当新),所以我会尝试包含尽可能多的信息,因为现在我很困惑!

我正在尝试编写代码来创建巴特沃斯过滤器以适应用户输入规范。我正在使用 Code Composer 4。

谷歌搜索了 54 个错误,我还剩下 1 个:

"expected a declaration" on line 27: if (n=1 && hpf=0)

我有三次检查的大括号,有什么想法吗?

编辑:

再次您好,感谢您的帮助。从那时起,已经解决了旧问题以及更多问题,但又再次碰壁;该代码不会覆盖(或创建,如果文件被删除)coffic.cof 文件。没有出现错误,但文件保持不变。有什么想法吗?

附注对之前的代码布局感到抱歉 - 希望这样更好:

#include "dsk6713_aic23.h"      //codec-DSK support file
Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; //set sampling rate
# include <stdio.h>
# include <math.h>
# include <stdlib.h>
#define pi 3.1415927
#include "coffic.cof"

void main()
{
double hpf, fs, fco, atn, fat, tp, k, ad, m, n, o, da, db, dc;
FILE *fp;
int c, d, e, f, g, h, i, q, r, s, t, u, v;
hpf = 0; //for a high-pass filter input 1, for a low-pass filter input 0
fs = 8000; //input samping frequency here
fco = 2400; //input cut-off frequency here
atn = 17; //input attenuation (dB) here
fat = 3500; //input the frequency of attenuation here
tp = 1/fs;
k = tan(pi*fco*tp);
ad = tan(pi*fat*tp);
m = (log10((pow(10,(atn/10)))-1))/(2*(log10(ad/k)));
o = abs(m);
n = ceil(o);

da = 1.414;
c = (pow(2,15)*k*k/(1+da*k+k*k));
d = (pow(2,15)*2*k*k/(1+da*k+k*k));
e = (pow(2,15)*k*k/(1+da*k+k*k));
q = (pow(2,15)*(2-2*k*k)/(1+da*k+k*k));
r = (pow(2,15)*(-1+k-k*k)/(1+da*k+k*k));

fp = fopen("U:\DSK6713\Ivo\CSP\coffic.cof", "w");
if (fp == NULL)
{
printf("Error. Unable to open coffic.cof");
exit(0);
}

fprintf(fp, "int a[3]={%d, d%, %d};\n", c, d, e);
fprintf(fp, "int b[3]={1, d%, %d};\n", q ,r);
fprintf(fp, "int x[3]={0,0,0};\nint y[3]={0,0,0};\n");

fflush(fp);

fclose(fp);

comm_intr(); //init DSK, codec, McBSP
while(1); //infinite loop
}

interrupt void c_int11() //interrupt service routine
{
short input;
FILE *fp;
fp = fopen("U:\DSK6713\Ivo\CSP\coffic.cof", "r");
if (fp == NULL)
{
printf("Error. Unable to open coffic.cof");
exit(0);
}

fclose(fp);

x[2]=x[1];
x[1]=x[0];
y[2]=y[1];
y[1]=y[0];

input=input_sample();
x[0]=input;

y[0]=a[0]*x[0]+a[1]*x[1]+a[2]*x[2]+b[1]*y[1]+b[2]*x[2];

y[0]=y[0]>>15;
input=(short)y[0];
output_sample(input); //output data
return;
}

最佳答案

n=ceil(o) 之后的大括号在做什么?

您将结束 main 函数,这会将 if 语句置于函数作用域之外。

删除该大括号,代码应该可以工作。

此外,在 if 语句中使用 == 而不是 =。 = 会给你的变量赋值,顺便说一句,它们总是返回 true,== 实际上是比较它们。

关于c - 期待一份声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16336326/

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