#include <stdio.h>
#ifdef GLOBAL_INSTANCE_DEBUG
#define CREATE_GLOBAL(TYPE, VALUE) MAKE_GLOBAL_INSTANCE_DEBUG(TYPE, VALUE)
#else
#define CREATE_GLOBAL(TYPE, VALUE) MAKE_GLOBAL_INSTANCE(TYPE, VALUE)
#endif
#define MAKE_GLOBAL_INSTANCE_DEBUG(TYPE, VALUE)\
static TYPE *VALUE(int line){\
static TYPE VALUE##_data;\
fprintf(stderr ,"use global instanse '%s' in %d.\n", #VALUE, line);\
return &VALUE##_data;\
}
// end define
#define MAKE_GLOBAL_INSTANCE(TYPE, VALUE)\
static TYPE *VALUE(int line){\
static TYPE VALUE##_data;\
return &VALUE##_data;\
}
// end define
#define GLOBAL_ACCESS(VALUE) (*VALUE(__LINE__))
CREATE_GLOBAL( int , foo)
#define foo GLOBAL_ACCESS(foo)
int main( void ) {
int foo = 2 ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojaWZkZWYgR0xPQkFMX0lOU1RBTkNFX0RFQlVHCiNkZWZpbmUgQ1JFQVRFX0dMT0JBTChUWVBFLCBWQUxVRSkgTUFLRV9HTE9CQUxfSU5TVEFOQ0VfREVCVUcoVFlQRSwgVkFMVUUpCiNlbHNlCiNkZWZpbmUgQ1JFQVRFX0dMT0JBTChUWVBFLCBWQUxVRSkgTUFLRV9HTE9CQUxfSU5TVEFOQ0UoVFlQRSwgVkFMVUUpCiNlbmRpZgogCiNkZWZpbmUgTUFLRV9HTE9CQUxfSU5TVEFOQ0VfREVCVUcoVFlQRSwgVkFMVUUpXAogICAgc3RhdGljIFRZUEUgKlZBTFVFKGludCBsaW5lKXtcCiAgICAgICAgc3RhdGljIFRZUEUgVkFMVUUjI19kYXRhO1wKICAgICAgICBmcHJpbnRmKHN0ZGVyciAsInVzZSBnbG9iYWwgaW5zdGFuc2UgJyVzJyBpbiAlZC5cbiIsICNWQUxVRSwgbGluZSk7XAogICAgICAgIHJldHVybiAmVkFMVUUjI19kYXRhO1wKICAgIH0KLy8gZW5kIGRlZmluZQojZGVmaW5lIE1BS0VfR0xPQkFMX0lOU1RBTkNFKFRZUEUsIFZBTFVFKVwKICAgIHN0YXRpYyBUWVBFICpWQUxVRShpbnQgbGluZSl7XAogICAgICAgIHN0YXRpYyBUWVBFIFZBTFVFIyNfZGF0YTtcCiAgICAgICAgcmV0dXJuICZWQUxVRSMjX2RhdGE7XAogICAgfQovLyBlbmQgZGVmaW5lCiAKI2RlZmluZSBHTE9CQUxfQUNDRVNTKFZBTFVFKSAoKlZBTFVFKF9fTElORV9fKSkKCkNSRUFURV9HTE9CQUwoaW50LCBmb28pCiNkZWZpbmUgZm9vIEdMT0JBTF9BQ0NFU1MoZm9vKQoKaW50IG1haW4odm9pZCkgewoJIGludCBmb28gPSAyOwoJIHByaW50ZigiJWQiLCBmb28pOwoJcmV0dXJuIDA7Cn0=