I have a typedef
typedef unsigned int my_type;
used in a file. I would like to make it visible across all my files, without putting it in a header file included by everything. I don't want to go the header file route because as it stands this will be the only declaration in the header file (and it seems unnecessary to add a file just for this).
Is there a way to do this?
If instead I had:
typedef X my_type;
where X was a class, would I need to include X.h everywhere and have the typedef at the end of X.h ?
I don't want to go the header file route because as it stands this will be the only declaration in the header file (and it seems unnecessary to add a file just for this).
What's the problem with that? It seems just as unnecessary to avoid creating a file at all costs.
Is there a way to do this?
Not as far as I am aware.
would I need to include X.h everywhere and have the typedef at the end of X.h ?
No, but that's probably the best thing. The only reason you should be doing that is if X is a template, and you need templates to be in headers anyway.
No way around this as far as I can see. Why don't you make a globals.h header file with just the declarations you want everywhere and include that?
Don't be tempted to bury your typedef somewhere and hope that 'since everything else hangs off the header' that it'll be as good as adding a global header - it is extremely bad practice to have headers that are not self contained.
Also, to prevent cluttering up the global namespace create your own:
namespace MyTypes
{
typedef A B;
const unsigned int g_nMyGlobalType = 10;
// etc.
}
That way you can use your globals in a nice uncluttered way:
MyTypes::B myVar; // etc
I would use the header file route, it's not so bad.
No you wouldn't need to include X.h everywhere, just in the places where you use the typedef.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With