Пытаюсь съэмулировать dos 16бит сегменты и dos linker. Линкер мог сегменты собирать в группы (по факту пределах 64к).
Если не понятно -объясню понятнее.
Хотел сделать так чтобы я мог пользоваться переменной (b.cpp), но она за размещение отвечал другой объектный модуль (bb_group.cpp).
Подскажите, почему собирается, но падает и в отладчике я вижу разные адреса для caa и group.aaa?
b.cpp:
#include <iostream>
extern int caa; // я внешняя переменная
struct Initializer {
Initializer()
{
caa=3; // делаем инициализацию внешней переменной
}
};
static const Initializer i; // во время старта, до main
using namespace std;
int main()
{
cout << "Hello World " << caa << endl;
return 0;
}
bb_group.cpp:
struct Group
{
int aaa; // Сама переменная в структуре
};
Group group; // которая в другом объектном файле
int& caa = group.aaa; // делаем ссылку на переменную в объекте
g++ bb_group.cpp b.cpp -O0 -o b -ggdb