LINUX.ORG.RU

История изменений

Исправление 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