LINUX.ORG.RU

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

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

Грубо говоря, для случаев, когда в функцию прилетает NULL, компилятор волен сгенерировать любое говно вместо кода. Например, выкинуть проверку.

В том коде проверка идет после использования указателя, там была бы проблема даже при просто потере указателя

Какую именно логику? С точки зрения языка, описанного в стандарте, компилятор ничего не ломает. Повторю цитату:

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

Оно является неправильным, это твоя программа неправильная. Потому что…

Ты тут впустую споришь, т.к. волатайл особо не рекомендуют использовать если что, а по твоей логике можно все глобальные переменные укатать в волатайлы смело и лишиться большей части оптимизаций или просто не использовать оптимизации, тогда и волатайл практически не нужен, собственно - ну ересь же…

… ты не знаешь языка, на котором пытаешься писать.

Ты опять лужу решил вспенить..? Сколько клонадить будешь…?

TL;DR: программа на языке Си модифицирует некое внешнее состояние (execution environment) относительно некоей абстрактной машины, описанной в стандарте (он правда довольно херово написан, если честно). Модификациями внешнего состояния (execution environment) являются: работа с файлами, сокетами, любыми другими внешними объектами, а также работа с volatile объектами. Порядок таких модификаций гарантируется стандартом (при условии отсутствия UB в программе). Порядок же любых других вычислений не гарантируется никак и никем и может быть любым. Вбей это себе в голову и перестань писать тут полную хероту.

Вот тут то у тебя и беда, я ж говорю ты в Си не пишешь… Друг, а что если нет сокетов, нет абстрактных машин и объектов нет, ничего нет кроме железа…? Ты НЕ пишешь под железо, ты просто читатель стандарта, это прикольно, можешь хелло ворлд написать или приложеньице в командную строку и это все… Я работаю не в абстрактной машиной, не с объектами и не с сокетами, я сам пишу и описываю поведение железа, функции вывода и интерфейсы связи, поэтому и говорю, что ты в Си ничерта не умеешь, у тебя язык закончился на абстракции и стандарте, ты под капот ему не лазаешь, многие проблемы не знаешь даже, т.к. для тебя Си - это gcc, clang, g++ и что там в стандарте написали…

Исправление Sm0ke85, :

Грубо говоря, для случаев, когда в функцию прилетает NULL, компилятор волен сгенерировать любое говно вместо кода. Например, выкинуть проверку.

В том коде проверка идет после использования указателя, там была бы проблема даже при просто потере указателя

Какую именно логику? С точки зрения языка, описанного в стандарте, компилятор ничего не ломает. Повторю цитату:

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

Оно является неправильным, это твоя программа неправильная. Потому что…

Ты тут впустую споришь, т.к. волатайл особо не рекомендуют использовать если что, а по твоей логике можно все глобальные переменные укатать в волатайлы смело и лишиться большей части оптимизаций или просто не использовать оптимизации, тогда и волатайл практически не нужен, собственно - ну ересь же…

… ты не знаешь языка, на котором пытаешься писать.

Ты опять лужу решил вспенить..? Сколько клонадить будешь…?

TL;DR: программа на языке Си модифицирует некое внешнее состояние (execution environment) относительно некоей абстрактной машины, описанной в стандарте (он правда довольно херово написан, если честно). Модификациями внешнего состояния (execution environment) являются: работа с файлами, сокетами, любыми другими внешними объектами, а также работа с volatile объектами. Порядок таких модификаций гарантируется стандартом (при условии отсутствия UB в программе). Порядок же любых других вычислений не гарантируется никак и никем и может быть любым. Вбей это себе в голову и перестань писать тут полную хероту.

Исправление Sm0ke85, :

Грубо говоря, для случаев, когда в функцию прилетает NULL, компилятор волен сгенерировать любое говно вместо кода. Например, выкинуть проверку.

В том коде проверка идет после использования указателя, там была бы проблема даже при просто потере указателя

Какую именно логику? С точки зрения языка, описанного в стандарте, компилятор ничего не ломает. Повторю цитату:

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

Оно является неправильным, это твоя программа неправильная. Потому что…

Ты тут впустую споришь, т.к. волатайл особо не рекомендуют использовать если что, а по твоей логике можно все глобальные переменные укатать в волатайлы смело и лишиться большей части оптимизаций или просто не использовать оптимизации, тогда и волатайл практически не нужен, собственно - ну ересь же…

… ты не знаешь языка, на котором пытаешься писать.

Ты опять лужу решил вспенить..? Сколько клонадить будешь…?

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

Грубо говоря, для случаев, когда в функцию прилетает NULL, компилятор волен сгенерировать любое говно вместо кода. Например, выкинуть проверку.

В том коде проверка идет после использования указателя, там была бы проблема даже при просто потере указателя

Какую именно логику? С точки зрения языка, описанного в стандарте, компилятор ничего не ломает. Повторю цитату:

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

Оно является неправильным, это твоя программа неправильная. Потому что…

Ты тут впустую споришь, т.к. волатайл особо не рекомендуют использовать если что, а по твоей логике можно все глобальные переменные укатать в волатайлы смело и лишиться большей части оптимизаций или просто не использовать оптимизации, тогда и волатайл практически не нужен, собственно - ну ересь же…