|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
|||
|
|||
|
Using vars across multiple .c files
We have a few global variables that we want to use in both user_routines.c and tracking.c. We can not seem to declare and access them in a way that the compiler likes. We either get an error saying multiple definitions, or not defined. I've tried defining the var in a globals.h and including that in both .c files, but that doesn't work. I've tried adding extern declarations in my .c files, but no dice there either. I've tried about every combo of declaring in .c and .h files, with and without externs but nothing seems to work. Anybody know what my problem is?
|
|
#2
|
|||||
|
|||||
|
Re: Using vars across multiple .c files
define the var as:
extern mytype myvar; in each file accessing it, except one. Then, in ONLY ONE file (the only without an extern declaration), declare the variable normally: mytype myvar; See http://www.crasseux.com/books/ctutor...variables.html Last edited by Jared Russell : 01-02-2006 at 22:17. |
|
#3
|
|||
|
|||
|
Re: Using vars across multiple .c files
I've tried this, but it won't work. In a file globals.h, I have the following:
int myvar; Then, in user_routines.c I have: #include "globals.h" extern int myvar; I do the same thing in tracking.c, with the include and extern declaration but I get the following linker error when I try to compile: symbol 'myvar' has multiple definitions I access the variable inside the default_routine function, and in another function in the tracking.c file. I've tried declaring it both inside the functions, and at the top of the .c file outside of any function, but below my preprocessor directives. Nothing seems to work. Everything look fine, but what am I doing wrong? Thanks for any ideas you guys might have. Quote:
|
|
#4
|
||||
|
||||
|
Re: Using vars across multiple .c files
Never declare variables in a header file. You can extern the variables, but never declare them. If you declare the variable in the header file, the compiler tries to create the variable each time it reads the header file.
Here's an example of what you should do: Code:
foo.c:
int myvar;
void foo(void)
{
myvar = 2;
}
bar.c:
extern int myvar;
void bar(void)
{
printf("myvar %d\r", myvar);
}
Code:
foo.c:
#include "globals.h"
int myvar;
void foo(void)
{
myvar = 2;
}
bar.c:
#include "globals.h"
void bar(void)
{
printf("myvar %d\r", myvar);
}
globals.h:
extern int myvar;
|
|
#5
|
|||||
|
|||||
|
Re: Using vars across multiple .c files
Quote:
|
|
#6
|
|||
|
|||
|
Re: Using vars across multiple .c files
That's what I was looking for. Everything compiled just fine. Thanks a bunch!
Quote:
|
|
#7
|
|||
|
|||
|
Re: Using vars across multiple .c files
Alternatively, you could use pointers. Declare variables in main.c, declare pointers to them, and pass said pointers to the ProcessDatefrommasterUP and processdatafrommasterIO functions. Then pass them from there to whatever other functions you want to have access to those vars.
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| using eclipse | dasRatsel | Programming | 82 | 02-01-2006 13:20 |
| Multiple Files | EricWilliams | Programming | 4 | 30-03-2005 15:51 |
| Combining multiple objects in different files into the same scene and file? | DinkyDogg | 3D Animation and Competition | 8 | 19-02-2005 19:14 |
| problem with .c files | incognito_NICK | Programming | 5 | 31-01-2005 13:19 |
| Multiple files usage | punarhero | Programming | 2 | 12-01-2003 11:45 |