Expected ';' identifier or '(' token before 'void'? [closed]

一世执手 提交于 2021-02-17 05:00:25

问题


I am trying to compile my code and I am getting the Expected ';' identifier or '(' token before 'void' error on C:10:1.. can't seem to find the typo if someone can help me out I would appreciate it! I have provided my code down below I am sure it is just a silly mistake I made somewhere.

#include <stdio.h>
#include <stdlib.h>

//setting up my binary converter struct
struct bin
{
    int data;
    struct bin *link;
}
void append(struct bin **, int);        //setting up append value
void reverse(struct bin**);         //reverse values to convert to binary
void display(struct bin *);         //so we can display

int main(void)
{
     int nu,i;              //global vars
     struct bin *p; 

     p = NULL;              //setting up p pointer to NULL to make sure it has no sense of being some other value

     printf("Enter Value: ");
     scanf("%d", &nu);

     while (nu != 0)
     {
        i = nu % 2;
        append (&p, i);
         nu /= 2;
     }

     reverse(&p);
     printf("Value in Binary: ");
     display(p);
}
  //setting up our append function now
void append(struct bin **q, int nu)
{   
     struct bin *temp,*r;
     temp = *q;

     if(*q == NULL)                             //making sure q pointer is null
     {   
          temp = (struct bin *)malloc(sizeof(struct bin));
          temp -> data = nu;
          temp -> link = NULL;
          *q = temp;
     }
     else
     {
          temp = *q;
          while (temp -> link != NULL)
          {
              temp = temp -> link;
          }
          r = (struct bin *) malloc(sizeof(struct bin));
          r -> data = nu;
          r -> link = NULL;
          temp -> link = r;
    }
    //setting up our reverse function to show in binary values
   void reverse(struct bin **x)
   {
        struct bin *q, *r, *s;
        q = *x;
        r = NULL;

       while (q != NULL)
       {
           s = r;
           r = q;
           q = q -> link;
           r -> link = s;
       }
       *x = r;
   }
   //setting up our display function
   void display(struct bin *q)
   {
       while (q != NULL)
       {
             printf("%d", q -> data);
             q = q -> link;
       }
   }

回答1:


You need to add semicolon (;) after declaration of your struct:

struct bin
{
  int data;
  struct bin *link;
};

Also, your main() function should return something. Add return 0; at the end of it.

And one more thing I noticed. Here:

int nu,i;              //global vars

The comment does not make any sense, as nu and i are not global variables. They are local variables, because they are declared in the scope of your main() function.

EDIT: The latter two comments obviously did not cause the compiling error, but I thought it would be a good think to mention them anyway.



来源:https://stackoverflow.com/questions/41129576/expected-identifier-or-token-before-void

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!