avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-gcc-list] Initilizing complex const arrays : syntax ?


From: Vincent Trouilliez
Subject: Re: [avr-gcc-list] Initilizing complex const arrays : syntax ?
Date: Sun, 18 Sep 2005 19:55:56 +0200

Thanks guys for the help,


I appear to have one last little problem about this :

if I do as David did, that is declare my array in main.c, then it works
fine. If I declare the array in ui.h ("ui" stands for User Interface in
my case), and include ui.h in main.c, then it's good too. However if I
do as intended, that is, create an ui.c file which will contain
functions that make use of the array defined in ui.h, well.....in this
case main.c and ui.c compile fine, but the linker will fail sadly :-/

$make
avr-gcc -O -g -Wall -ffreestanding -mmcu=atmega32 -c main.c
avr-gcc -O -g -Wall -ffreestanding -mmcu=atmega32 -c ui.c
avr-gcc -o object.elf -O -g -Wall -ffreestanding -mmcu=atmega32
-Wl,-Map,object.elf.map -Wl,--section-start=.eeprom=00810001 main.o ui.o
ui.o(.progmem.data+0x0): multiple definition of `param_list'
main.o(.progmem.data+0x0): ~/avr/Projects/test2/main.c:3: first defined
here
make: *** [object.elf] Error 1


I can't make sense of the error messages.
I did notice that it does link fine, if I comment out the "include
ui.h" in ui.c, but you just all taught me the other day to always
include foo.h at the top of foo.c, when writing a module, which makes
sense since modules are compiled independently so need their .h file to
be complete. So I am lost again...


Regards,


--
Vince



The complete test program is as follows, can't make it simpler :


main.c
------

#include "ui.h"

void main (void){

}

ui.c
----
#include "ui.h"


ui.h
----

#include <avr/pgmspace.h>

//data type for one engine parameter
struct param {
        char    desc[11];                       
        char    unit[4];
        char    format[6];
};


extern const struct param __ATTR_PROGMEM__ param_list[] = {
        { "Throttle", "  %", "%2d" },
        { "Eng. Speed", "RPM", "%4d" },
        { "M. A. T.", " °C", "%2d" },
        { "M. A. P.", "Bar", "3.2f"}
};







reply via email to

[Prev in Thread] Current Thread [Next in Thread]