Re: extern "C" and global variables
Re: extern "C" and global variables
- Subject: Re: extern "C" and global variables
- From: Rush Manbert <email@hidden>
- Date: Fri, 31 Mar 2006 15:24:32 -0800
John Weeks wrote:
Hi, folks.
I have a C++ source file that defines a global variable:
extern "C" unsigned char gSuppressLiveUpdate = 0;
so that it can be used from a C source file. In the C file, of course, I have
extern unsigned char gSuppressLiveUpdate;
gcc complains (OK, it's just a warning):
warning: 'gSuppressLiveUpdate' initialized and declared 'extern'
I guess I see the point of the warning; it's not really extern because it
is being defined right there. But then, how do I prevent name mangling so
that it can be used in the C file, without using the "extern" keyword?
At the moment I have suppressed the warning by defining and initializing it
in the C file and using just extern "C" unsigned char gSuppressLiveUpdate;
in the C++ file. But that's not satisfying; I want to be able to put the
definition where I want it.
CodeWarrior and VC++.net are both OK with this, but I realize that gcc is
actually more standards-compliant that they are. I tried searching for an
answer with Google, but all the discussions are about functions declared
extern "C".
It would be "more standard" to move the declaration to the corresponding
header file, i.e.
extern "C" unsigned char gSuppressLiveUpdate;
and keep the definition in the C++ file, i.e.
unsigned char gSuppressLiveUpdate = 0;
This should take away the warning, and shouldn't have any effect on the
C file, since it's doing its own declaration. (But it should read a
header that contains this declaration. Really it should read the same
header as the C++ file. Might require some #ifdef hanky panky, or just a
globals.h file that's included both places.)
- Rush
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden