We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I'm working with the RealView Compiler and have a strange problem with the usart.
I've installed one typedef struct in a headerfile - when I try to install a array of this struct in the c-file (as global struct variable) - I'm not able to get some printf() messages over the usart (no data abort or anything else (the program seems to work) - only no messages over the usart..
When I install the array of this struct in a function within this c-file (not global) - everything works ok...
Could there be a problem with less stack size?
tobi
Most programs consists of more than a single C file.
extern mystruct_t myarray[] in the header file allows other C files (that includes the header file) to know about the existence of a global variable myarry.
If your myarray variable is not expected to be known to other source files, then you should probably hide it. No information about it in the header file, and writing:
static mystruct_t myarray[NUMBER_OF_X_ENTRIES];
in the single source file where the variable should be used. This will hide the variable from the linker. To the linker, it will just be an anonymous block of memory (together with all other static variables in the same source file) without any name.
at the moment I have one headerfile where all other headerfiles where included - so in every c-file I only include this headerfile...
If I use in one of this heatherfiles to define my struct -> then I have to use extern to define a variable, haven't I? So that could be the reason for my strange errors?
header.h #include header1.h #include header2.h
header1.h typedef struct {...}STRUCT_VAR; extern STRUCT_VAR struct_array[];
header1.c #include <header.h> STRUCT_VAR struct_array[NBR_STRUCT];
BTW, is this a common way? Or is it better to have in every c-file all #include <header.h> which are needed in the specific c-file?