C# для начинающих - страница 5
Процесс создания выполняемого файла С# программы может быть представлен как последовательность этапов предварительной обработки, компиляции и компоновки (рис. ).
Рис. Процесс создания выполняемого файла
Препроцессор выполняет предварительную обработку исходной программы. Он просматривает текст исходной программы и выполняет директивы, которые в ней находятся (директива – инструкция, начинающаяся символом #). Если с исходной программе директив препроцессору нет, то обработка не выполняется и текст программы передается компилятору без изменений.
Компилятор обрабатывает сформированную препроцессором программу: проверяет ее на наличие синтаксических и семантических. При обнаружении синтаксической ошибки, например, необъявленного идентификатора (переменной), выводится сообщение об ошибке. При обнаружении семантической ошибки, например переменной, которая объявлена, но в программе не используется, выводится предупреждение.
Если в программе нет синтаксических ошибок, то запускается процесс компоновки. Компоновщик собирает выполняемую программу – добавляет к сформированному компилятором коду код других модулей.
Чтобы активизировать процесс создания выполняемого файла, надо в меню Сборка выбрать команду Собрать решение. Если в программе ошибок нет, то в окно Вывод будет выведено сообщение об успешном завершении процесса сборки (рис . ).
Рис. Пример сообщения об успешной сборке программы
Если в программе есть ошибки, то выводится сообщение об ошибках, предупреждения и информация о неудачном завершении процесса сборки (рис. ).
Рис. Пример сообщения о неуспешной сборке программы
Кроме этого, в окне редактора кода выделяются фрагменты программы, содержащие ошибки (они подчеркиваются красной волнистой чертой), а также “подозрительные” фрагменты (подчеркиваются зеленой волнистой чертой), не являющиеся ошибками, но на которые следует обратить внимание. Именно при обнаружении таких фрагментов компилятор выводит предупреждения.
Ошибки
Выполняемая программа (файл exe) создается только в том случае, если в исходной программе нет синтаксических ошибок. Если в программе есть ошибки, то программист должен их устранить. В табл. приведены некоторые сообщения о типичных ошибках.
Таблица.. Сообщения об ошибках
Сообщение
Возможная причина
Ошибка – Имя … не существует в текущем контексте
Используется необъявленная переменная или имя переменной в выражении не соответствует имени, указанному в инструкции объявления переменной. Например, в программе объявлена переменная sum, а в выражении указана переменная summ или Sum.
Предупреждение – Переменной … присвоено начальное значение, но оно не используется.
Переменная объявлена и ей присвоено начальное значение, но в программе она не используется или в выражении, где предполагается использование этой переменной, имя записано неправильно (в этом случае, скорее всего, помимо предупреждения будет выведено одно или несколько сообщений об использование несуществующего имени). Например, объявлена переменная Weight а выражении, в котором предполагается ее использование, вместо Weight написано weight
Процесс устранения ошибок носит итерационный характер. Обычно сначала устраняются наиболее очевидные ошибки, например, объявляются не объявленные переменные или если переменная объявлена, исправляются имена в выражениях, так, чтобы имена переменных в выражениях, соответствовали именам переменных в инструкциях объявления. Следует обратить внимание на то, что одна ошибка в программе может “тащить” за собой несколько других. Например, если в рассматриваемой программе вычисления среднего веса в инструкции объявления переменной w заменить w на W, то компилятор выведет сообщения о трех ошибках (так как в трех местах программы используется имя w) и предупреждение о неиспользуемой переменной W. Обратная замена W на w, т.е. одно исправление, устраняет три ошибки и предупреждение.