LINUX.ORG.RU

Ответ на: комментарий от alexru

Откуда именно она возьмется - важно линкеру.

Компилятору достаточно знать, что она в принципе будет :)

alexru ★★★★
()
Ответ на: комментарий от alexru

Пацаны, а в линуксе такие штуки как IID_IUnknown могут кем-то (я про братьев ядра) импортиться ? или нужно чего-то ставить ?

anonymous
()
Ответ на: комментарий от anonymous

Может стоит выдыхать?

Какие у ядра братья? Формулируй фопрос человечнее.

alexru ★★★★
()
Ответ на: комментарий от anonymous

IID_IUnknown - это наверное про COM. Вообще что-то про COM для Linux где-то есть. И скорее всего именно для переноса программ из Windows, потому что в Linux и без COM зоопарк неуниверсальных компонентных моделей.. Но для переноса COM-программы, как минимум, нужен программист, который в этом COM разбирается. Если автор из таких - успехов

erDiZz
()

и это... просто для const память не выдлятся, а для extern const - да, т.к. видимость у const - одна единица компиляции, а для extern const - хммм... посложнее.

Pi ★★★★★
()
Ответ на: комментарий от Pi

А у меня другая информация:

const - это _только_ модификатор правила доступа ("только чтение"), и даже для глобальной переменной вида

static const int foo = 10;

в объектном файле будет заботливо выделено 4 байта в секции данных, в которых будет зашито значение 10, а при исполнении функции

void bar () { const int foo = 1; }

на стеке будут выделены те же четыре байта, в которые ляжет значение 1

erDiZz
()
Ответ на: комментарий от erDiZz

а я ничего противоречивого не сказал - уточню: в рамках одной единицы компиляции что надо тупо забивается значениями, а при extern значение кладётся в память, а "на местах" обращаются к этой ячейки.

т.е. о разных вещах говорим.

Pi ★★★★★
()
Ответ на: комментарий от Pi

На сомом деле все зависит от того, кто именно const. В одних случаях память под этот объект может быть выделена, в других - нет.

devinull ★★
()
Ответ на: комментарий от Pi

> просто для const память не выдлятся, а для extern const - да

если компилятор увидит что берется адрес const переменной,
то память будет выделена и в случае просто const.

Причем для
const int i = 2;
const int j = 2;

будет выделено две разных ячейки, а не одна.

dilmah ★★★★★
()
Ответ на: комментарий от Pi

>просто для const память не выдлятся

память не выделяется ровно до тех пор, пока кто-нибудь не заинтересуется адресом этой константы.

Если его автор вопроса понимает, для чего нужен просто extern и для чего нужен просто const, то чего же он тогда не понимает?

anonymous
()
Ответ на: комментарий от anonymous

> Это зависит от компилятора и/или опций.

это будет нарушением стандарта.

dilmah ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.