Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

include проблема (redefine error)

23K
29 июня 2007 года
CyberManiac
9 / / 02.02.2007
Привет всем.
У меня возникла такая проблема:
есть заголовочный файл с прототипами, макросами , переменными
есть Срр фаил с телами ф-ций и Срр фаил с их вызовами и основным кодом,
в общем всё как обычно
типо этого
Код:
// zag.h

#include <some_inlude.h>

typedef struct STR_
{
    //...
}STR;

extern long global_perem; //глобально для всех где есть этот инклуд
void fnx_1(void); //прототип ф-ии
void fnx_2(void);

//** конец zag.h *****************************************
//main.c
#include "zag.h"
   
STR str;
long global_perem=1; //должно быть обьявленно хоть в одном *.c файле где включен zag.h иначе глюк

void fnx_1(void)
{
    global_perem=2;
         fnx_2();
}

//** конец main.c ******************************
//dop.c
#include "zag.h"
   
STR str_1;

void fnx_2(void)
{
    global_perem=2;
}
//*** конец dop.h ***************************


но возникают ошибки типа повторного определения переменных
или ещё что-то

пытаюсь использовать
#ifndef _BLA_
#define _BLA_
//вся байда
#endif

но вся равно не помогает

В чём проблема? Что делать?
Может какие-то опции надо установить?
Или ещё что-то?
15K
29 июня 2007 года
vja
85 / / 09.01.2007
STR str_1;
попробуй заменить на _STR lalala;

на какие конкретно переменные ругается?
23K
29 июня 2007 года
CyberManiac
9 / / 02.02.2007
Да это псевдокод. Просто пример. Ругается на все переменные. Это я Вижуал 2005 использую. Я брал работающие проэкты и та же проблема: не хочет компилиовать сли код разбрасон по нескольким файлам, если всё в 1 Срр фаил засунуть то всё работает нормально.

Подскажите плиз кто знант :(
279
30 июня 2007 года
bave
456 / / 07.03.2004
А может у тебя препроцессор деректифы условной компиляции не выполняет - проверь его внутри проги как нибудь по простому, например так:

#define TEST 1

int main()
{
//....

#ifndef TEST
__asm _emit 0xCC
#endif

//...
}

Сработает если отладочное прерывание, значит точно не выполняет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог