Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
uriy
имеется некий проект в нем файлы main.c, uart.c и uart.h
_________________________
Содержимое main.c:

#include "uart.h"

void main (void)
{
// тут естесно код
}

________________________

содержимое uart.h

#ifndef _UART_H
#define _UART_H

#define RX_BUF_SIZE 8

char rx_buf[RX_BUF_SIZE];

void putchar(char c);
void print(char *c);
#endif //_UART_H

_________________________

содержимое uart.c

#include "uart.h"

void putchar(char c)
{
//код
}

void print(char *c)
{
//код
}



Оба файла uart.c и uart.h подключаю к проекту с помощью Add files.. в результате при компиляции вылазит ошибка о том что переменная char rx_buf[RX_BUF_SIZE]; определна дважды. Если все делать без хидеров в одном файле main.c работает.
Что я делаю не так?
Сергей Борщ
Цитата(urasinov @ Apr 10 2007, 10:32) *
Что я делаю не так?

содержимое uart.h
extern char rx_buf[RX_BUF_SIZE];

содержимое uart.c

#include "uart.h"
char rx_buf[RX_BUF_SIZE];
rezident
Угу. Сергей Борщ прав. Объявлять/декларировать глобальную переменную нужно только в одном СИшном модуле. В других ее (их) нужно включать как внешние через квалификатор extern.
uriy
спасибо все заработало
dek_t
Если уж разбивать на модули, то в main не нужен rx_buf. Его должны использовать только функции uart.c
а main оперирует с функциями из uart. Или наоборот буфер в main и передавать в uart ссылку на буфер. Смотря какая задача. Это ООП получается )
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.