c语言 define值的问题

写了一小段程序,想在以后用时改变s值即可改变程序中数组长度,但编译报错,求解答错在何处?(草草写的,有一些没用的变量没有删)#include<math.h>#includ... 写了一小段程序,想在以后用时改变s值即可改变程序中数组长度,但编译报错,求解答错在何处?(草草写的,有一些没用的变量没有删)

#include <math.h>
#include <stdio.h>
#define s 3;
#define epxl 1e-12;
double ita (double a[s])
{
double b=0;
int i;
for(i=0;i<s;i++)
{
b=b+a[i]*a[i];
}
return b;
}
void main()
{
double a[s][s];
double y[s],u[s];
double eta,btak,btak1,jc;
int i,j,k;
for (i=0;i<s;i++)
{
y[i]=1;
}
jc=ita (y);
printf("%f",jc);
}
将程序中的s全换成同一数字(如3)时程序编译通过,应该是define 的问题吧,不太明白,请教如何改动?(想达到只改s就可改变数组长度的目的)
展开
 我来答
killer_jacket
推荐于2016-11-10 · TA获得超过701个赞
知道小有建树答主
回答量:338
采纳率:0%
帮助的人:344万
展开全部
#define s 3;
改成
#define s 3
也就是去掉3后面的分号

#define epxl 1e-12;
一样

因为在此处#define只作简单的字符替换
#define s 3;
将后面出现s的地方换成3; 所以会出错
angela_angela
2011-10-14 · TA获得超过495个赞
知道小有建树答主
回答量:130
采纳率:100%
帮助的人:184万
展开全部
你把#define后面的分号删掉就可以通过了
写成#define s 3

在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
2011-10-14 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6425万
展开全部
#define s 3;
会导致编译时将所有的s全替换成“3;”了
宏定义时,不要带;结尾
去掉分号,改成:
#define s 3
也可以这样改一下:
const int s=3;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式