[#] [Перевод] Что каждый программист на C должен знать об Undefined Behavior. Часть 1/3
habrabot(difrex,1) — All
2017-10-30 10:00:04


Люди иногда спрашивают, почему код, скомпиливанный в LLVM иногда генерирует сигналы SIGTRAP, когда оптимизация была включена. Покопавшись, они обнаруживают, что Clang сгенерировал инструкцию «ud2» (подразумевается код X86) — то же, что генерируется \_\_builtin\_trap(). В этой статье рассматривается несколько вопросов, касающихся неопределённого поведения кода на C и того, как LLVM его обрабатывает.

![image][1]

В этой статье (первой из трёх) мы попытаемся объяснить некоторые из этих вопросов, чтобы вы могли лучше понять связанные с ними компромиссы и сложности, и возможно, изучить немного больше тёмные стороны С. Мы выясним, что C не является «высокоуровневым ассемблером», как многие опытные программисты на C (особенно те, кто сфокусирован на низком уровне) предпочитают думать, и что C++ и Objective-C напрямую унаследовали множество таких проблем.
[Читать дальше →][2]

[1]: https://habrastorage.org/webt/si/fm/kb/sifmkb_11ismyizm4kt5oe-vix4.jpeg
[2]: https://habrahabr.ru/post/341048/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut