Объяснение
Компиляция проверяет типы и создаёт объектные файлы; линкер разрешает внешние символы. У объекта есть размер, выравнивание и время жизни. Чтение неинициализированных значений и выход за границы могут приводить к undefined behavior.
Задача для самостоятельного решения
Чем отличается ошибка синтаксиса от undefined reference?
Показать разбор ответа
Синтаксис отвергается компилятором. Undefined reference обычно означает, что линкер не нашёл реализацию объявленной функции: проверьте исходники, библиотеки и порядок линковки.