LINUX.ORG.RU

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

Исправление m0rph, (текущая версия) :

это как? Кто-нибудь сможет пояснить?

Не скажу что было в коде VirtualBox, но как пример могу привести инициализацию глобальной переменной (которая больше нигде не используется) значением, возвращенным некоторой функцией. Подобным образом неумные люди добиваются автоматического выполнения этой функции до входа в main().

bool r = registerClassBuilder();

bool registerClassBuilder()
{
    // Код регистрации класса на фабрике
    return true;
}

Компилятор видя, что r больше нигде не используется, может предположить, что создавать ее необязательно, а значит и дергать registerClassBuilder() не требуется. Обычно такой трюк прокатывает, но вот если это написать в коде статической библиотеки, 100% будет сюрприз.

Исходная версия m0rph, :

это как? Кто-нибудь сможет пояснить?

Не скажу что было в коде VirtualBox, но как пример могу привести инициализацию глобальной переменной (которая больше нигде не используется) значением, возвращенным некоторой функцией. Подобным образом неумные люди добиваются автоматического выполнения этой функции до входа в main().

bool r = registerClassBuilder();

bool registerClassBuilder()
{
    // Код регистрации класса на фабрике
    return true;
}