я не могу найти эту ошибку синтаксиса, который читает:Ожидаемый идентификатор или «(» перед синтаксисом «символ» ошибка
/home/ubuntu/workspace/stack.c:6:12: error: expected identifier or ‘(’ before ‘char’
char stack(char cmd[40])
^
символ^находится под второй с в стеке (полукокса, я посмотрел вокруг, и я не могу найти ответ, большинство из них - это что-то простое: в конце основной функции, но я не вижу ничего плохого в этом. У кого-то есть идея?
stack.c
#ifndef stack
#define stack
#include <stdio.h>
#include "stack.h"
char stack(char cmd[40])
{
stacks newstack()
{
stacks s;
s -> head = NULL;
return s;
}
void deletestack(stacks s)
{
node temp;
while(s -> head)
{
temp = s -> head;
s -> head = s -> head -> next;
free(temp);
}
free(s);
}
int isEmpty(stacks s)
{
if(s -> head == NULL)
return 1;
else
return 0;
}
void push(stacks s, element e)
{
node n = (node)malloc(sizeof(node_type));
n -> e = e;
n -> next = s -> head;
s -> head = n;
}
element peek(stacks s)
{
return s -> head -> e;
}
void display(stacks s)
{
while(s -> head)
{
printf("%d\n", s -> head -> e);
}
}
element pop(stacks s)
{
printf("%d\n", s -> head -> e);
temp = s -> head;
s -> head = s -> head -> next;
free(temp);
}
}
#endif
stack.h
#ifndef ____Linked_List_H____
#define ____Linked_List_H____
#include "stdheader.h"
//Structures
//element is content of a node.
typedef int element;
//node is 1 link in a linked list.
struct _node{
element e;
struct _node* next;
};
typedef struct _node node_type;
typedef struct _node* node;
//linked list is a series of links tracked by the head or start of the list. struct _linked_list{
node head;
};
typedef struct _linked_list stacks_type;
typedef struct _linked_list* stacks;
stacks newstack();
void deletestack(stacks);
int isEmpty(stacks);
element pop(stacks);
void push(stacks, element);
element peek(stacks);
void display(stacks);
#endif
Похоже, у вас есть точка с запятой из 'stack.h'. Можете ли вы опубликовать этот код? Кроме того, вы пытаетесь определить функции внутри функций, которые не разрешены в C. – templatetypedef
Вы пропустили что-то в файле заголовка. – Holsety
Идентификаторы, начинающиеся с double-underscore, зарезервированы для реализации. Не используйте их в пользовательском коде! И не указатель 'typedef'! Это сглаживает семантику и является приглашением для логических ошибок в коде. – Olaf