C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 1 - Преобразование файлов / MSDN rus / Visual C++

Шаг 1 - Преобразование файлов

Процесс создания программы из исходного текста заключается в переводе одного или нескольких файлов в бинарный вид с кодом программы. Этот процесс происходит в несколько этапов.

Лексический анализ. В этот процесс производится подготовка текста к обработке, символьный разбор, срашивание линий. Как известно каждая строка заканчивается знаком ;, а каждый блок начинается { и заканчивается } в эту фазу производится анализ строк на правильность.

Препроцессор. В этом этапе обрабатываются директивы препроцессора такие, например, как #include или #define, а так же обрабатываются макро определения. Директивы препроцессора всегда начинаются со знака #.

Генерация кода. D эту фазу производится создание объектного кода на основе написанных строк и выражений.

Препроцессор C++ является расширением препроцессора C, но имеет несколько расширений.

  • Коментарии на одну линию
  • Встроенное макро __cplusplus, которое есть только в C++.
  • Препроцессор C не признает операторов C++ таких как *,->,*,::.

Вот примерно так для кода. Этот код будет для начала собран в строки.

// 2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#define  asb 100

int main(int argc, char* argv[])
{
	printf("Hello World!\n");
	return 0;
}

Примерно вот так:

#include"stdafx.h"
#define asb 100 
int main(int argc,char* argv[])
{
	printf("Hello World!\n");
	return 0;
}

Собраны строки, удалены все ненужные пробелы, коментарии если есть. Дальше будет обработаны команды препроцессора, а потом сам код. Измените код как ниже, чтобы посмотреть какую ошибку компилятор найдет первой. Вот я сделаю ошибку в #define и компилятор найдет её и остановится не обратив внимания на ошибку в типе переменной в main(), двинуться дальше можно было только исправив ошибку в препроцессоре.

#include"stdafx.h"
#defin asb 100 
int main(intxx argc,char* argv[])
{
	printf("Hello World!\n");
	return 0;
}

Вот так скажет компилятор:

--------------------Configuration: 2 - Win32 Debug--------------------
Compiling...
2.cpp
D:\Project\2\2.cpp(5) : fatal error C1021: invalid preprocessor command 'defin'
Error executing cl.exe.

2.exe - 1 error(s), 0 warning(s)

И только исправив эту ошибку произойдет разбор теста и поиск следующей. То есть команды препроцессора проверяются первыми и пока они не проверены производится остановка и дальше процесс компиляции не идет.


|
Автор Каев Артем.
[AD]