История изменений
Исправление AntonI, (текущая версия) :
// a.h
#pragma once
struct A{
#ifdef XXX
int x = -1;
#endif //XXX
int y = -2;
void f();
};
// a.cpp
#include <stdio.h>
#include "a.h"
void A::f(){ printf("y=%i\n", y); }
#include "a.h"
int main(){
A a;
a.y = 1;
a.f();
return 0;
}
$ g++ -Wall -DXXX -c a.cpp
$ g++ -Wall -c b.cpp
$ g++ -o rumgot a.o b.o
$ ./rumgot
y=-2088792064
$ g++ -Wall -c a.cpp
$ g++ -Wall -DXXX -c b.cpp
$ g++ -o rumgot a.o b.o
$ ./rumgot
y=-1
Исходная версия AntonI, :
// a.h
#pragma once
struct A{
#ifdef XXX
int x = -1;
#endif //XXX
int y = -2;
void f();
};
// a.cpp
#include <stdio.h>
#include "a.h"
void A::f(){ printf("y=%i\n", y); }
#include "a.h"
int main(){
A a;
a.y = 1;
a.f();
return 0;
}
$ g++ -Wall -DXXX -c a.cpp
$ g++ -Wall -c b.cpp
$ g++ -o rumgot a.o b.o
$ ./rumgot
y=-2088792064