Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2014, 23:23   #1
dreamboy
Пользователь
 
Регистрация: 27.02.2014
Сообщений: 12
Радость Ошибки

Не могу устранить ошибки:
1)stack.obj : error LNK2005: "struct NODE node" уже определен в main.obj
2)stack.obj : error LNK2005: "struct STACK stack" уже определен в main.obj
3)обнаружен многократно определенный символ - один или более

Файл main.cpp:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "stack.h"
#pragma warning(disable : 4996)

int main()
{
	STACK *st;
 	PNODE nd;
	FILE *f1;
	char w[80];
	int cnt; //v nei budem chitat edinitsi

	st = (STACK*)malloc(sizeof(stack));
	init_stack(st);
	f1 = fopen("f1.txt", "r");

	do {
		fscanf(f1, "%s", &w);

		if (!feof(f1))
            break;

		if (!strcmp(w, "("))
		{
			nd = (PNODE)malloc(sizeof(node));
			nd->info = 1;
			push(st, nd);
		}
		else if (!strcmp(w, ")")){
			nd = (PNODE)malloc(sizeof(node));
			nd->info = -1;
			push(st, nd);
		}
	} while (!feof(f1));

		fclose(f1);
		cnt = 0;
		nd = pop(st);

		do{
			cnt += nd->info;
			free(nd);
			nd = pop(st);
		} while (nd != NULL);

		if (cnt == 0)
		{
			printf("Kol-vo skobok ( i ) sovpadaet!\n");
		}
		else if (cnt>0){
			printf("Kol-vo skobok ( na %d bolshe!\n", cnt);
		}
		else {
			printf("Kol-vo skobok ) na %d bolshe!\n", cnt);
		}

	free(st);
	return 0;
}
stack.cpp
Код:
#include <stdio.h>
#include "stack.h"

#define bool int
#define true 1
#define false 0

void init_stack(STACK*st)
{
	st->count = 0;
	st->size = STACKSIZE;
	st->top = NULL;
}

void print_stack(STACK *st){
	PNODE nd;
	nd = st->top;
	while (nd != NULL){
		printf("%d -> ", nd->info);
		nd = nd->next;
	}
}

bool is_stack_empty(STACK*st){
	return(st->count == 0) ? (true) : (false);
}

bool is_stack_overflow(STACK*st){
	return(st->count == st->size) ? (true) : (false);
}

void push(STACK*st, PNODE nd){
	if (!is_stack_overflow(st)){
		nd->next = st->top;
		st->top = nd;
		st->count++;
	}
	else{ ; }
}

PNODE pop(STACK *st)
{
	PNODE nd = NULL;
	if (!is_stack_empty(st)){
		nd = st->top;
		st->top = st->top->next;
		st->count--;
	}
	return nd;
}
stack.h

Код:
typedef struct NODE NODE;
typedef struct STACK STACK;
typedef struct NODE* PNODE;

#define bool int
#define true 1
#define false 0

struct NODE
{
	int info;
	PNODE next;
}node;

struct STACK
{
	int count;
	int size;
	PNODE top;
}stack;

#define STACKSIZE 100
//typedef enum { false, true } bool;

void init_stack(STACK*);
bool is_stack_empty(STACK*);
bool is_stack_overflow(STACK*);
void print_stack(STACK*);
void push(STACK*, PNODE);
PNODE pop(STACK*);
dreamboy вне форума Ответить с цитированием
Старый 03.05.2014, 03:28   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

гугл (учебник) - header guard
p51x вне форума Ответить с цитированием
Старый 03.05.2014, 09:19   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

header guard здесь ни причем.

конструкция:
struct { ... } name;
объявляет переменную, соотвественно появляются две переменные с одним именем в двух разных cpp файлах. Ну и linker жалуется...

здесь надо:
typedef struct { ... } name;
waleri вне форума Ответить с цитированием
Старый 03.05.2014, 16:17   #4
dreamboy
Пользователь
 
Регистрация: 27.02.2014
Сообщений: 12
По умолчанию

Cпасибо, прежних ошибок теперь нет.
Но появилась другая - Debug Asertion Failed, line 52,
Expression: (stream! = NULL)

Последний раз редактировалось dreamboy; 03.05.2014 в 16:27.
dreamboy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра - викторина. Ошибки, ошибки, ошибки!.. three_cats Общие вопросы C/C++ 1 27.10.2012 21:47
Ошибки.. Wedzmin Помощь студентам 1 17.12.2011 14:26
ошибки в си Repac123456 Помощь студентам 0 01.06.2011 22:13
Ошибки delphin100 Операционные системы общие вопросы 12 17.04.2008 14:15