Форум программистов, компьютерный форум CyberForum.ru

В чём разница между заголовками <c***> и <***.h>? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Безопасно ли использовать memcpy при выделении памяти по ходу выполнения програмы http://www.cyberforum.ru/cpp-beginners/thread672152.html
Безопасно ли использовать memcpy при выделении памяти по ходу выполнения програмы. Например: namespace { static int fieldCnt = 0; }; struct TeamResult
C++ Условный оператор if. Задание 1 Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений "Да", "Нет", "На границе" в зависимости от того, лежит ли точка внутри заштрихованной области, вне заштрихованной области или на ее границе. http://www.cyberforum.ru/cpp-beginners/thread672126.html
C++ подпрограммаи двумерный массив
как в подпрограмму передать двумерный масив ?? #include <iostream> using namespace std; const int x = 3; const int y = 2; void my_function() {
Сортировка пузырьком C++
вот написала программу но не работает :( #include <iostream> #include <conio.h> #include <ctime> #include <cstdlib> using namespace std; int array; void *buble_sort(int length){ int trash=0;
C++ Метод парабол http://www.cyberforum.ru/cpp-beginners/thread672116.html
Здравствуйте помогите разобраться и реализовать метод пaрабол, для функции вида: x*x+3*sin(x)=0 int main() { setlocale(LC_ALL,""); double A=-2,B=-1,X, E=0.00001;//отрезок , E cout<<"Метод пaрабол"<<endl; X=parabol(A,B,E); cout<<endl; system("PAUSE"); return 0;
C++ Перебор значений Вывести на экран в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр. подробнее

Показать сообщение отдельно
Кот Ангенс
 Аватар для Кот Ангенс
317 / 267 / 37
Регистрация: 24.05.2012
Сообщений: 629
16.10.2012, 16:25     В чём разница между заголовками <c***> и <***.h>?
Цитата Сообщение от xtorne21st Посмотреть сообщение
Лично для меня до сих пор не понятно, в чём разница между компоновщиком и препроцессором?
Возьмем другой пример:
C++
1
2
3
4
5
6
7
#include <iostream>
#include <iostream>
#define print std::cout <<
 
int main() {
    print "Hello World";
}
Сначала работает препроцессор - он подключает файл iostream, в котором, помимо всего прочего, определен некий дефайн. Он мешает повторному включению, и ошибки не возникает. Далее находятся все отдельно стоящие слова print в исходнике и заменяются на "std::cout <<". Т. о. код приобретает следующий вид:
C++
1
2
3
4
5
//Содержимое файла <iostream>
 
int main() {
    std::cout << "Hello World";
}
После этого код обрабатывает компилятор. Он выделяет смысловые части (лексемы) и следит за тем, чтобы все переменные, функции etc были предварительно объявлены. В данном случае он проверяет существование объявления переменной std::cout, а также объявлений классов std::ostream, std::iostream и std::ios_base. На выходе компилятор генерирует объектный код, в котором вместо адресов памяти находятся символические имена.
Компоновщик (linker) просматривает все получившиеся объектные файлы и "связывает" их вместе. Он проверяет, чтобы каждая функция и переменная, к которой есть обращение, существовала в действительности. Например, в следующем коде ошибку выдаст не компилятор, а компоновщик:
C++
1
2
3
4
5
6
7
#include <iostream>
 
int myfunc();
 
int main() {
    std::cout << myfunc();//myfunc объявлена, но нигде не определена
}
Выходной файл у компоновщика - exe'шник.
 
Текущее время: 20:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru