Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Почему в С++ нельзя опустить заголовки?
 
 автор: 123php   (26.10.2006 в 23:20)   письмо автору
 
 

В php этого ведь нет. Или это с позиции производительности удобно?

   
 
 автор: cheops   (26.10.2006 в 23:31)   письмо автору
 
   для: 123php   (26.10.2006 в 23:20)
 

Под заголовками что подразумевается? Заголовочные файлы или HTTP-заголовки в CGI-скриптах?

   
 
 автор: 123php   (26.10.2006 в 23:34)   письмо автору
 
   для: cheops   (26.10.2006 в 23:31)
 

первые строчки кода в с

#include

   
 
 автор: cheops   (27.10.2006 в 00:27)   письмо автору
 
   для: 123php   (26.10.2006 в 23:34)
 

И в PHP это имеется, когда вы подключаете файлы при помощи include().

   
 
 автор: 123php   (27.10.2006 в 00:32)   письмо автору
 
   для: cheops   (27.10.2006 в 00:27)
 

имеется, но там это не обязательно, а в с, как я понял, без этого нельзя.

   
 
 автор: cheops   (27.10.2006 в 00:55)   письмо автору
 
   для: 123php   (27.10.2006 в 00:32)
 

PHP - это интерпретатор, а программа на C++ компилируется - какие библиотеки подключите, такие и войдут в состав конечной программы. Т.е. если вы подключите 1 Мб библиотеку, даже не используя из неё функций, размер вашей программы увеличится на 1 Мб, поэтому по умолчанию ничего личшнего не подключается.

   
 
 автор: Саня   (27.10.2006 в 21:18)   письмо автору
 
   для: cheops   (27.10.2006 в 00:55)
 

Разве? В. В. Подбельский в своей книге писал, что из заголовочных файлов в конечный код попадают только те функции (прототипы и описания), которые были использованы хотя бы один раз в коде.

   
 
 автор: cheops   (27.10.2006 в 22:22)   письмо автору
 
   для: Саня   (27.10.2006 в 21:18)
 

Ну погорячился :))) (компиляторы сейчас действительно умные пошли и вряд ли пропустят такой ляп), пусть используете лишь одну функцию из библиотеки. Просто по сети ходит не мало баек, когда размер программы увеличивался до нескольких мегабайт ради одной функции из библиотеки. В любом случае область достаточно чувствиетльная - вы можете сами решать проблему, а можете подключать для решения проблемы библиотеку, увеличивая объём своей программы. Хотел лишь подчеркнуть, что управлением памятью, в том числе и размером конечного исполняемого модуля полностью (на сколько это возможно) контролируется программистом, отсюда ограничения и сложность языка.

   
 
 автор: 123php   (27.10.2006 в 23:24)   письмо автору
 
   для: cheops   (27.10.2006 в 22:22)
 

почему при компиляции сам компилятор не может определить какую библиотеку ему добавить, исходя из функций, которые в коде?

   
 
 автор: Trianon   (27.10.2006 в 23:37)   письмо автору
 
   для: 123php   (27.10.2006 в 23:24)
 

потому что согласно стандарта языка, ни одно имя функции не является зарезервированным за самим компилятором. Оно Ваше. Захотите - опишете свой объект с таким именем. Захотите - опишете объект из стандартных библиотек. Захотите сделаете это руками, а захотите - включением заголовочного файла. До тех пор, пока Вы этого не сделали, компилятор не имеет права соотносить это имя с чем либо по своему вкусу, пусть даже у него 1000 заголовков под боком.

   
 
 автор: cheops   (27.10.2006 в 23:39)   письмо автору
 
   для: 123php   (27.10.2006 в 23:24)
 

Воспринимайте это как традицию языка, которую просто нужно выполнять - это не самая неприятная особенность C++ :))). Обычно, чтобы не включать целую батарею заголовочных файлов их объединяют в один файл. Например, если вы работаете с консольным проектом, то заголовочный файл <iostream> подключит ещё десяток заголовочных файлов.

   
 
 автор: Саня   (27.10.2006 в 23:51)   письмо автору
 
   для: 123php   (27.10.2006 в 23:24)
 

Потому что можно сделать свой заголовочный файл и в нём определить свою функцию с названием, уже существующем в другом заголовочном файле. Компилятор просто-напросто не разберётся какую библиотеку подключать.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования