错误C2143:语法错误:缺少';'转移指针前的'type'之前

时间:2014-03-21 09:10:00

标签: c pointers visual-c++

当我尝试将指针转移到另一个指针时,我对以下错误感到困惑。有没有人可以告诉我为什么会发生这种错误?

它说

error C2143: syntax error : missing ';' before 'type'

传输指针时如下:

void compressString(char * pStr)
{
    char * pInputStr ;
    // ...
    pInputStr = pStr;  //**I can not understand why this sentence is error.** 
    // ...
}

但是这个可以工作:

void compressString(char * pStr)
{
    char * pInputStr = pStr; //No error will be alerted. 
    // ...
}

这是功能的更完整版本:

void compressString(char * pStr)
{

      char * pInputStr = pStr;  
      char * pCompressedStr = NULL;

      int  totalRepeatChar;  
      int currentPointerPosition; 
      int lenCompressedStr = 0;
      char testTemp;
      int i = 0;

      pInputStr = pStr;        //I can not understand why this sentence is error. 

      char arrIntCoverted[DIGITALUINTNUM+1] = {'\0'};

      // And then lots more code in the function
}

2 个答案:

答案 0 :(得分:2)

您得到的错误是因为您混合了声明和可执行语句,而Visual Studio使用的是旧的C语言,而您无法做到这一点。

这是一个可执行的声明:

  pInputStr = pStr;        //I can not understand why this sentence is error. 

你得到的错误实际上不在那一行,而是在下一行,这是一个声明:

  char arrIntCoverted[DIGITALUINTNUM+1] = {'\0'};

答案 1 :(得分:0)

在多行注释中,“/”和“*”应该在一起。在您的情况下,您在评论结束时有新行。

检查:

pInputStr = pStr;  //**I can not understand why this sentence is error.** 
    // ...