求助!VC编译时出错,local function definitions are illegal是怎么回事?? 我在编译程序时,发现上述错误在同一类上在定义函数时定义的函数都是出现local function definitions are illegal在其他类上定义不出现此类情况不知道使怎么回事在线等待,请那位告诉我,立即给分 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 只要定义函数不管是什么都不合法就是在class wizard上直接加的,也不合法,但是在重新建一个工程,原来的复制过去都合法了,使我用的盗版vc的原因??还是某个环境的设置??? 函数定义不合法,要看code才行 http://expert.csdn.net/Expert/topic/1842/1842622.xml?temp=.9849665 CMatrix CSDlg::BringMatrixb(CMatrix Matrix){ CMatrix Matrixb; Matrixb.SetMatrixRowAndCol(Matrix.GetMatrixRowNumber()-1); for(int i=1;i<Matrix.GetMatrixRowNumber();i++) { Matrixb.m_pTMatrix[i][1]=Matrix.m_pTMatrix[i][Matrix.GetMatrixColNumber()]; } return Matrixb;}等等,这类的函数CMatrix 是我为矩阵定义的一个类,上面没出问题,而在别的类里面定义这个函数时老是说定义不合理, //将数字字符串转化成数值double CMathString::stringToDigital(char *s){ double sum=0, //转化后的数值 temp, ten=0.1; //小数变化值 int i,ch, flag=0; //标识是小数还是整数,0为整数 for(i=0;s[i]!='\0';i++) { if(s[i]!='.') { if(flag==0) //整数部分 { ch=s[i]-'0'; sum=sum+ch; sum=sum*10; } else //小数部分 { ch=s[i]-'0'; temp=ch*ten; //小数点移位 sum=sum+temp; ten=ten*0.1; //改变小数点位置 } } else //小数点 { sum=sum/10; flag=1; } }//for if(flag==0) //无小数部分 sum=sum/10; return sum;}这个函数,过去定义可以现在编译又通不过了现在我真是晕死了 #include "stdafx.h"#include "MathString.h"#include "math.h"#define PI 3.1415926#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE[]=__FILE__;#define new DEBUG_NEW#endif这是mathstring.cpp的开头#if !defined(AFX_MATHSTRING_H__669187A1_784A_421F_B9EA_EAED6FA6D9AF__INCLUDED_)#define AFX_MATHSTRING_H__669187A1_784A_421F_B9EA_EAED6FA6D9AF__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000#define MAX 100 //表达式最长为100个字符#include "Matrix.h"class CMathString {public: int numberd; int numberp; int numberx; CMatrix Matrix;void Initial(char *str,double x); void Initial(char *s);//成员变量 char string[MAX]; //存放算术表达式,长度为MAX=100 double xx, //存放积分或函数中的x result; //算术表达式的值 struct Bolan //存放波兰表达式的结构 { int flag; //标识该节点是数值、运算符还是函数,变量。 //0为数值,1为运算符,2为函数,3是变量。 double value; //数值值 char oper; //运算符 +,-,*,/,~(取反),(,) int func; //函数的编号,各函数编号及功能见开始部分 char pdx; //函数的变量 }; Bolan bolan[MAX]; //存放转化后的波兰表达式,长度为MAX=100 CMathString(); CMathString(char *s); //构造函数,将算术表达式*s赋给string CMathString(char *s,double x); //表达式中带未知数的构造函数 //算术表达式*s赋给string,未知数x赋给xx //用于积分表达式//成员函数 void setX(double x); //设置成员变量xx的值 int checkString(void); //检查输入的表达式是否正确,包括括号是否 //配对、库函数是否正确,不检查小数点、逗号 //是否正确 //若正确,将表达式中的大、中括号该成小括号 //并在表达式尾加‘#’标识 //若正确,返回值为1;否则返回0; //因积分表达式中有x,所以表达式中的x作为 //字符处理 int stringToMatrix(void); //将算术表达式string转化成波兰表达式, //波兰表达式放在bolan[]中 int compvalue(void); //计算波兰表达式bolan[]的值 //若计算中途没有发生错误,则返回0,并将求得 //的波兰表达式值存入result //若计算中途发生错误(如除数为0),则 double getvalue(void); //返回计算得到的表达式值, //内部功能函数 int seekStr(char *str,int &i,char *s); //检查字符窜str的第i个位置开始的后面字符是否与字符窜s相匹配 //是的话将i=i+len(s),并返回1,否则返回0 double stringToDigital(char *s); //将数字字符串转化成数值 //返回值为字符串的数值 virtual ~CMathString();};#endif // !defined(AFX_MATHSTRING_H__669187A1_784A_421F_B9EA_EAED6FA6D9AF__INCLUDED_)这是mathstring.h 请教各位:如何改变菜单的提示,也就是prompt项的内容? 【请教】如何将LPCTSTR转换为const char * 单文档工程中如何动态添加视图? 添加工程?在线等待! 请教访问USB 有关WSAEnumprotocols的小问题,送分题 如何在Csplitterwnd的某个pane中,动态切换view 关于图像显示 特急!!!24分 为什么用VB中编写的控件在VC中不能用? 问flywolfman,你好!win98下如何用.inf, 在程序中一次将驱动安装成功? 哪有折扣较大的联通17910IP卡,我想倒点?
不管是什么
都不合法
就是在class wizard上直接加的,也不合法,但是在重新建一个工程,原来的复制过去都合法了,使我用的盗版vc的原因??还是某个环境的设置???
{
CMatrix Matrixb;
Matrixb.SetMatrixRowAndCol(Matrix.GetMatrixRowNumber()-1);
for(int i=1;i<Matrix.GetMatrixRowNumber();i++)
{
Matrixb.m_pTMatrix[i][1]=Matrix.m_pTMatrix[i][Matrix.GetMatrixColNumber()];
} return Matrixb;}等等,这类的函数
CMatrix 是我为矩阵定义的一个类,上面没出问题,而在别的类里面定义这个函数时
老是说定义不合理,
double CMathString::stringToDigital(char *s)
{
double sum=0, //转化后的数值
temp,
ten=0.1; //小数变化值
int i,ch,
flag=0; //标识是小数还是整数,0为整数
for(i=0;s[i]!='\0';i++)
{
if(s[i]!='.')
{
if(flag==0) //整数部分
{
ch=s[i]-'0';
sum=sum+ch;
sum=sum*10;
}
else //小数部分
{
ch=s[i]-'0';
temp=ch*ten; //小数点移位
sum=sum+temp;
ten=ten*0.1; //改变小数点位置
}
}
else //小数点
{
sum=sum/10;
flag=1;
}
}//for
if(flag==0) //无小数部分
sum=sum/10;
return sum;}
这个函数,过去定义可以
现在编译又通不过了
现在我真是晕死了
#include "MathString.h"
#include "math.h"#define PI 3.1415926#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif这是mathstring.cpp的开头
#if !defined(AFX_MATHSTRING_H__669187A1_784A_421F_B9EA_EAED6FA6D9AF__INCLUDED_)
#define AFX_MATHSTRING_H__669187A1_784A_421F_B9EA_EAED6FA6D9AF__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000#define MAX 100 //表达式最长为100个字符
#include "Matrix.h"
class CMathString
{
public:
int numberd;
int numberp;
int numberx;
CMatrix Matrix;
void Initial(char *str,double x);
void Initial(char *s);
//成员变量
char string[MAX]; //存放算术表达式,长度为MAX=100
double xx, //存放积分或函数中的x
result; //算术表达式的值
struct Bolan //存放波兰表达式的结构
{
int flag; //标识该节点是数值、运算符还是函数,变量。
//0为数值,1为运算符,2为函数,3是变量。
double value; //数值值
char oper; //运算符 +,-,*,/,~(取反),(,)
int func; //函数的编号,各函数编号及功能见开始部分
char pdx; //函数的变量
};
Bolan bolan[MAX]; //存放转化后的波兰表达式,长度为MAX=100
CMathString();
CMathString(char *s); //构造函数,将算术表达式*s赋给string
CMathString(char *s,double x); //表达式中带未知数的构造函数
//算术表达式*s赋给string,未知数x赋给xx
//用于积分表达式
//成员函数
void setX(double x); //设置成员变量xx的值
int checkString(void); //检查输入的表达式是否正确,包括括号是否
//配对、库函数是否正确,不检查小数点、逗号
//是否正确
//若正确,将表达式中的大、中括号该成小括号
//并在表达式尾加‘#’标识
//若正确,返回值为1;否则返回0;
//因积分表达式中有x,所以表达式中的x作为
//字符处理
int stringToMatrix(void); //将算术表达式string转化成波兰表达式,
//波兰表达式放在bolan[]中
int compvalue(void); //计算波兰表达式bolan[]的值
//若计算中途没有发生错误,则返回0,并将求得
//的波兰表达式值存入result
//若计算中途发生错误(如除数为0),则
double getvalue(void); //返回计算得到的表达式值,
//内部功能函数
int seekStr(char *str,int &i,char *s);
//检查字符窜str的第i个位置开始的后面字符是否与字符窜s相匹配
//是的话将i=i+len(s),并返回1,否则返回0
double stringToDigital(char *s); //将数字字符串转化成数值
//返回值为字符串的数值 virtual ~CMathString();
};#endif // !defined(AFX_MATHSTRING_H__669187A1_784A_421F_B9EA_EAED6FA6D9AF__INCLUDED_)
这是mathstring.h