Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: где взять хедеры для программирования на c++  (Прочитано 2390 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн cmygeHm

  • Автор темы
  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Hello World!

Вопрос такой: компилирую мелкую программку, понимаю что она не находит sys/time.h хедер, потому что
Код:

main.cpp:22: error: ‘time’ was not declared in this scope
main.cpp:23: error: ‘localtime’ was not declared in this scope
main.cpp:24: error: ‘strftime’ was not declared in this scope

Ну найти сам файл в интернете - не вопрос. Вопрос, чтобы версия была той, что подойдет к моей версии g++, а точнее его библотекам, и куда вообще этот файл ложить. Думаю ответ выглядит так:
Код:

sudo apt-get install time-dev
Спасибо

Axa-Ru

  • Гость
Используйте ключ -I для указания размещения хидеров

http://www.4shared.com/document/e_7yaH_i/GCC_The_Complete_Reference.html
« Последнее редактирование: 31 Август 2011, 14:04:46 от Axa-Ru »

Оффлайн Smytjan

  • Участник
  • *
  • Сообщений: 118
    • Просмотр профиля
А если?
#include <time.h>
Ubuntu 10.04.4 x64 & Win7

Оффлайн __v1tos

  • Участник
  • *
  • Сообщений: 105
  • Ubuntuu 10.10 x86-64
    • Просмотр профиля
man 2 time
NAME
       time - get time in seconds

SYNOPSIS
       #include <time.h>
       .....

Для того чтобы компилить
sudo apt-get install build-essential
AMD Phenom II 945, GA-MA790GPT-UD3H (HD 3300), 5 GiB ram

Оффлайн cmygeHm

  • Автор темы
  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
man 2 time
NAME
       time - get time in seconds

SYNOPSIS
       #include <time.h>
       .....

Для того чтобы компилить
sudo apt-get install build-essential

К чему здесь цитата man 2 time. Вот реально не понимаю я! Во первых как я должен был догадаться что искать о time.h надо не в man time, a в man 2 time. Во вторых в man 2 time не написана в какой пакет включен хедер.

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Во-первых, умерьте пыл, от того, что вы будете разговаривать таким тоном, быстрее вам не помогут.
Во-вторых, если уж собрались учить такой непростой язык, как С++, будьте готовы, что вам придется много читать, и не только про сам язык, но и про систему, на которой будет работать ваша программа. И начать вы могли бы с изучения справочного руководства, предоставляемого системой, тогда бы вы возможно знали, что все man-страницы разделены на разделы, всего их 9. Второй раздел содержит справку по системным вызовам, третий - по библиотечным функциям и т.д. Т.о. команда "man 2 time" ищет страницу справки "time" во втором разделе, в найденной странице указано, какой заголовочный файл надо подключить, чтобы получить прототип функции. Далее, если такого файла у нас в системе нет, идем на http://packages.ubuntu.com/ru/ , и в "Поиск по содержимому пакетов" вписываем название файла "time.h", в найденном списке ищем файл "/usr/include/time.h" и видим, что он находится в пакете lib6-dev. Устанавливаем и пользуемся.

Оффлайн cmygeHm

  • Автор темы
  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Re: где взять хедеры для программирования на c++
« Ответ #6 : 01 Сентябрь 2011, 10:02:06 »
Во-первых, умерьте пыл, от того, что вы будете разговаривать таким тоном, быстрее вам не помогут.
Во-вторых, если уж собрались учить такой непростой язык, как С++, будьте готовы, что вам придется много читать, и не только про сам язык, но и про систему, на которой будет работать ваша программа. И начать вы могли бы с изучения справочного руководства, предоставляемого системой, тогда бы вы возможно знали, что все man-страницы разделены на разделы, всего их 9. Второй раздел содержит справку по системным вызовам, третий - по библиотечным функциям и т.д. Т.о. команда "man 2 time" ищет страницу справки "time" во втором разделе, в найденной странице указано, какой заголовочный файл надо подключить, чтобы получить прототип функции. Далее, если такого файла у нас в системе нет, идем на http://packages.ubuntu.com/ru/ , и в "Поиск по содержимому пакетов" вписываем название файла "time.h", в найденном списке ищем файл "/usr/include/time.h" и видим, что он находится в пакете lib6-dev. Устанавливаем и пользуемся.

Спасибо за очень хороший ответ, который раскрыл все таинства поиска хедеров для меня. Насчет пыла - это не пыл, я просто эмоциональный человек, и меня очень расстроило то, что вроде все очень логичное для кого-то для меня не логично и вообще не понятно.
Спасибо  :coolsmiley:

Пользователь решил продолжить мысль 01 Сентябрь 2011, 16:22:55:
Подскажите тогда, почему
#include <sys/time.h>

int main(int argc, char* argv[]) {

time_t now;
time(&now);
return 1;
}
сообщает:
Цитировать
cmygeHm@cmygeHm:~/MyDaemon$ g++ time.cpp
time.cpp: In function ‘int main(int, char**)’:
time.cpp:6: error: ‘time’ was not declared in this scope
Я думал что нет хедера time.h. Но видать дело не в нем.  :idiot2:

Пользователь решил продолжить мысль 01 Сентябрь 2011, 17:11:18:

cmygeHm@cmygeHm:~/MyDaemon$ g++ time.cpp
time.cpp: In function ‘int main(int, char**)’:
time.cpp:6: error: ‘time’ was not declared in this scope

спасло #include <time.h>
« Последнее редактирование: 01 Сентябрь 2011, 17:11:18 от cmygeHm »

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: где взять хедеры для программирования на c++
« Ответ #7 : 01 Сентябрь 2011, 17:16:54 »
Найди 10 отличий
yurik@yurik-book:~$ cat test1.c
#include <sys/time.h>

int main(int argc, char* argv[])
{
time_t now;
time(&now);
return 1;
}
yurik@yurik-book:~$ gcc -Wall -Wextra -o test1 test1.c
test1.c: In function ‘main’:
test1.c:6:2: warning: implicit declaration of function ‘time’
test1.c:3:14: warning: unused parameter ‘argc’
test1.c:3:26: warning: unused parameter ‘argv’
yurik@yurik-book:~$ cat test2.c
#include <time.h>

int main(int argc, char* argv[])
{
time_t now;
time(&now);
return 1;
}
yurik@yurik-book:~$ gcc -Wall -Wextra -o test2 test2.c
test2.c: In function ‘main’:
test2.c:3:14: warning: unused parameter ‘argc’
test2.c:3:26: warning: unused parameter ‘argv’
yurik@yurik-book:~$ cat test3.cpp
#include <sys/time.h>

int main(int argc, char* argv[])
{
time_t now;
time(&now);
return 1;
}
yurik@yurik-book:~$ g++ -Wall -Wextra -o test3 test3.cpp
test3.cpp: In function ‘int main(int, char**)’:
test3.cpp:6:11: error: ‘time’ was not declared in this scope
test3.cpp: At global scope:
test3.cpp:3:5: warning: unused parameter ‘argc’
test3.cpp:3:5: warning: unused parameter ‘argv’
yurik@yurik-book:~$ cat test4.cpp
#include <time.h>

int main(int argc, char* argv[])
{
time_t now;
time(&now);
return 1;
}
yurik@yurik-book:~$ g++ -Wall -Wextra -o test4 test4.cpp
test4.cpp:3:5: warning: unused parameter ‘argc’
test4.cpp:3:5: warning: unused parameter ‘argv’
yurik@yurik-book:~$
man тебе написали потому что надо писать #include <time.h>
А для С++ правильнее будет #include <ctime>
Читай документацию http://www.cplusplus.com/reference/

 

Страница сгенерирована за 0.094 секунд. Запросов: 25.