Оптимизация недостижимого кода

Мем про оптимизацию недостижимого кода компилятором, где функция, которая никогда не должна была быть вызвана, все равно выводит "Hello world!".
Мем про оптимизацию недостижимого кода компилятором, где функция, которая никогда не должна была быть вызвана, все равно выводит "Hello world!".

Мем, состоящий из четырех панелей, демонстрирует шутку, связанную с программированием и оптимизацией компилятора. На верхней левой панели представлен фрагмент кода на C++. Функция `main` содержит бесконечный цикл `while(1);`, который не дает программе выйти из него. Ниже определена функция `unreachable()`, которая должна выводить "Hello world!", но никогда не вызывается. На верхней правой панели изображен человечек-стикман, который удивленно восклицает: "Этот код никогда ничего не сделает!". Он сидит за столом и ест из миски, держа ложку. На нижней левой панели показан вывод командной строки. Компилятор `clang++` компилирует файл `loop.cpp` с флагами `-O1` (уровень оптимизации) и `-Wall` (вывод всех предупреждений). Затем программа запускается (`./loop`), и неожиданно выводится "Hello world!". На нижней правой панели изображен тот же стикман, который подавился едой и сильно закашлялся, выражая шок и недоумение. Это демонстрирует, что компилятор с оптимизацией `-O1` "понял", что цикл `while(1);` не дает программе завершиться, и вместо того, чтобы попасть в бесконечный цикл, он оптимизировал код так, что функция `unreachable()` была вызвана, хотя по логике программиста она никогда не должна была выполняться. Мем высмеивает неожиданное поведение оптимизаторов компиляторов, которые могут делать вещи, не предусмотренные разработчиком, "умнее" его.

#include <iostream> int main() { while (1); } void unreachable() { std::cout << "Hello world!" << std::endl; } This code will never do anything! $ clang++ loop.cpp -O1 -Wall -o loop $ ./loop Hello world!

Вы можете искать и отправлять мемы прямо в Telegram!

Просто введите в любом чате "@memexpertbot" и поисковой запрос - бот покажет наиболее подходящие мемы, и вы сможете сразу их отправить.

Поиск мемов с помощью телеграм-бота MemeXpert
Поиск мемов с помощью телеграм-бота MemeXpert