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

Мем, состоящий из четырех панелей, демонстрирует шутку, связанную с программированием и оптимизацией компилятора. На верхней левой панели представлен фрагмент кода на 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" и поисковой запрос - бот покажет наиболее подходящие мемы, и вы сможете сразу их отправить.
