|
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"...
|