错误C2143:语法错误:缺少“;” (在......面前 ”。 ”)

时间:2013-05-20 02:29:43

标签: c++ visual-studio-2012 mfc

我尝试在按钮功能中调用HuffmanTree1.CreateHfmTree(char Str,int m,int n);。当运行它时,给我错误C2143:语法错误:缺少“;” (在“。”之前)

它是翻译的语法错误:缺少“;”(在“。”的前面)

我的代码如下:

void CHuffmanTreeDlg::OnBnClickedButton1()
{      // TODO: 在此添加控件通知处理程序代码
    UpdateData(TRUE);
    if (m_radio1=1)
    {
        char*pszFileName="C:\C++\HuffmanTree\HuffmanTree\WData.txt";
        CStdioFile myFile;
        CFileException fileException;
        if(myFile.Open(pszFileName,CFile::modeCreate|CFile::typeText|CFile::modeReadWrite),&fileException)
        {   AfxMessageBox("打开成功");
        myFile.SeekToBegin();
        CString str1;
        myFile.ReadString(str1);
        CString str2;
        AfxMessageBox(str1+str2);
        ifstream ifs("WData.txt");
        ofstream ofs("WCode.txt"); 
        char str[1000]; 
        char Str[100]; 
        int i=0,j,m[100],h,k=0; 
        int n=0; 
        char ch; 
        while(ifs.get(ch)) 
        { 
            if(ch!='\n') 
            {str[n++]=ch;}
            for(i=0;i<n;i++) 
            { 
                j=0;h=0; 
                while(str[i]!=str[j]) 
                    j++; 
                if(j==i) 
                { 
                    Str[k]=str[i]; 

                } 
                else 
                    continue; 
                for(j=i;j<n;j++) 
                { 
                    if(str[i]==str[j]) 
                        h++; 
                }      
                m[k]=h; 
                k++; 
            } 
            HuffmanTree1.CreateHfmTree(char Str,int m,int n); 
            cin.get();

            m_length=n;
            m_string1="报文的编码已经保存在WCode.txt";
            UpdateData(FALSE);
        }
        }
        else
        {
            TRACE("Can't open file%s,error=%u\n",pszFileName,fileException.m_cause);
        }
        myFile.Close();
    }   
}

感谢您的帮助:D

2 个答案:

答案 0 :(得分:3)

这一行:

HuffmanTree1.CreateHfmTree(char Str,int m,int n); 

很奇怪。它或多或少是函数声明,但缺少返回类型。它不是对函数的调用;你没有列出类型。如果您正在尝试调用函数,请删除char和两个int,然后重命名其他参数。我没有看到代码可以使用的类变量HuffmanTree1 - 这使得它成为全局变量,或者在此函数之外定义的变量。你确定这是一个很好的界面设计吗?将值传递给参数中的函数通常比使用“全局”变量更好。

答案 1 :(得分:1)

您是要尝试调用该函数还是声明它?无论哪种方式,在函数名中都有一个句点是无效的,除非你有一个名为HuffmanTree1的变量引用具有这个成员函数的类。