|
extern struct StructName varName ; |
Important caveat:
|
| main program file (defines a) | help program file (declares a) |
|---|---|
/* --------------------------- Define the structure FIRST ---------------------------- */ struct BankAccount { int accNum; double balance; }; /* ------------------------------------ THEN you can define a struct variable ------------------------------------ */ struct BankAccount a; int main(int argc, char *argv[]) { a.accNum = 123; a.balance = 1000.0; print(); // Invoke print() defined // inside a different file } |
/* -------------------------- Define the structure FIRST -------------------------- */ struct BankAccount { int accNum; double balance; }; /* ---------------------------- THEN you can declare variable ---------------------------- */ extern struct BankAccount a; // Declare structure variable a // that is defined ELSEWHERE void print() { printf("a.accNum = %d a.balance = %f\n", a.accNum, a.balance); } |
How to run the program:
|
|
| main program file (defines a) | help program file (declares a) |
|---|---|
/* ---------------------------
Define the structure FIRST
---------------------------- */
struct BankAccount
{
int accNum;
double balance;
};
/* ------------------------------------
Now you can define a struct variable
------------------------------------ */
struct BankAccount a;
int main(int argc, char *argv[])
{
a.accNum = 123;
a.balance = 1000.0;
print(); // Invoke print() defined
// inside a different file
}
|
/* --------------------------
REPEAT the definition !!!
-------------------------- */
struct BankAccount
{
int accNum;
double balance;
};
/* ----------------------
Now you can declare a
---------------------- */
extern struct BankAccount a;
// Declare structure variable a
// that is defined ELSEWHERE
void print()
{
printf("a.accNum = %d a.balance = %f\n",
a.accNum, a.balance);
}
|
Repeating a definition (e.g., by cut and paste) can result in errors caused by typos or "paste accidents"...
|