КАРТА САЙТА
Sibnet.ru
Sibnet.ru

Sibnet.ru — это информационно-развлекательный интернет-проект, ориентированный на широкий круг Сибирского региона.
По данным Rambler Top100, Sibnet.ru является самым популярным порталом в Сибири.

Контакты:
АО "Ринет"
ОГРН 1025402475856
г. Новосибирск, ул. Якушева, д. 37, 3 этаж
отдел рекламы:
(383) 347-10-50, 347-06-78, 347-22-11, 347-03-97

Редакция: (383) 347-86-84

Техподдержка:
help.sibnet.ru
Авторизируйтесь,
чтобы продолжить
Некоторые функции доступны только зарегистрированным пользователям
Неправильный логин или пароль

Внимание! Теперь для входа на форум необходимо вводить единый пароль регистрации сервисов sibnet.ru!

Здравствуйте, гость ( Вход | Регистрация )



85 страниц V « < 3 4 5 6 7 > »   
Ответить в эту темуОткрыть новую тему
> Язык Си/С++, вопросы и ответы
Krawler
сообщение 11.2.2009, 22:54
Сообщение #81


Любит поговорить
Group Icon


Группа: Sibnet-club
Сообщений: 305
Регистрация: 24.5.2008
Из: А адресок не надо????
Пользователь №: 34 141



Репутация:   18  


Цитата(otmopo3ok @ 11.2.2009, 22:33) *
я так подозреваю надо кое-какую библиотеку подключать для WinAPI?
Да, по-моему windows.h Посмотри документацию
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
milyan
сообщение 18.2.2009, 23:47
Сообщение #82


заготовка для человека
Group Icon


Группа: Sibnet-club
Сообщений: 415
Регистрация: 19.12.2007
Из: Новосиб(Первомайка)
Пользователь №: 14 054



Репутация:   47  


Люди у кого-нибудь есть учебник по структурам.. желательно чтоб там было побольше примеров программ.. язык Си
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
mephisto
сообщение 18.2.2009, 23:54
Сообщение #83


ортодоксальный линуксоид
Group Icon


Группа: VIP
Сообщений: 7 724
Регистрация: 17.11.2007
Из: столицы вашей родины
Пользователь №: 10 849



Цитата(milyan @ 18.2.2009, 22:47) *

Люди у кого-нибудь есть учебник по структурам.. желательно чтоб там было побольше примеров программ.. язык Си

Прямо таки учебник? Там всё в одну главу умещается biggrin.gif

Спрашивай уже что нужно
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
RedJ
сообщение 19.2.2009, 0:51
Сообщение #84


武士道
Group Icon


Группа: Пользователи
Сообщений: 3 288
Регистрация: 16.2.2008
Пользователь №: 20 846



Цитата(milyan @ 18.2.2009, 22:47) *

Люди у кого-нибудь есть учебник по структурам.. желательно чтоб там было побольше примеров программ.. язык Си


http://lib.sibnet.ru/book/7500 отличная энциклопедия там есть очень много всего включая и структуры данных.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
milyan
сообщение 19.2.2009, 22:31
Сообщение #85


заготовка для человека
Group Icon


Группа: Sibnet-club
Сообщений: 415
Регистрация: 19.12.2007
Из: Новосиб(Первомайка)
Пользователь №: 14 054



Репутация:   47  


Цитата(mephisto @ 18.2.2009, 22:54) *

Прямо таки учебник? Там всё в одну главу умещается biggrin.gif

Спрашивай уже что нужно

Ща гляну учебник то что мне предложили... если не то, сообщу об этом,т.е. укажу что точно мне надо=)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
AxoN
сообщение 20.2.2009, 0:46
Сообщение #86


МЕГА флудер
Group Icon


Группа: Sibnet-club
Сообщений: 1 225
Регистрация: 25.10.2007
Пользователь №: 8 658



Кернигана и Ричи почитай там все прекрасно изложено.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Linky
сообщение 3.3.2009, 13:19
Сообщение #87


МЕГА флудер
Group Icon


Группа: Sibnet-club
Сообщений: 3 466
Регистрация: 31.3.2008
Из: Барнаул
Пользователь №: 27 560



Репутация:   243  


Раскритикуйте правильность подключения файлов smile.gif
Необходимо было разбить проект на несколько файлов, а именно на заголовочный с интерфейсом и файл реализации.

complex.h
» Спойлер (нажмите, чтобы прочесть) «


complex.cpp
» Спойлер (нажмите, чтобы прочесть) «


main.cpp
» Спойлер (нажмите, чтобы прочесть) «


Сообщение отредактировал Linky - 3.3.2009, 14:51
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Krawler
сообщение 3.3.2009, 14:48
Сообщение #88


Любит поговорить
Group Icon


Группа: Sibnet-club
Сообщений: 305
Регистрация: 24.5.2008
Из: А адресок не надо????
Пользователь №: 34 141



Репутация:   18  


» Спойлер (нажмите, чтобы прочесть) «
Насколько я помню, чтобы файл подключался только один раз надо добавить примерно следующее
Код

#ifndef COMPLEX_H
#define COMPLEX_H

//Здесь код заголовочного файла

#endif

Аналогино можно сделать и для СРР, но, по-моему при подключении заголовочного файла, файл с реализацией ищется автоматически (не помню точно)

Сообщение отредактировал Krawler - 3.3.2009, 14:50
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Linky
сообщение 3.3.2009, 14:53
Сообщение #89


МЕГА флудер
Group Icon


Группа: Sibnet-club
Сообщений: 3 466
Регистрация: 31.3.2008
Из: Барнаул
Пользователь №: 27 560



Репутация:   243  


Krawler,
спс, попробую.
сейчас изменил заголовочный файл до такого вида, так все устраивает, но незнаю насколько это корректно )
Код

#include <iostream>
#include <iomanip.h>
#include <math.h>

class Complex
...
#include "complex.cpp"


main
Код

#include "complex.h"
больше ничего не подключается


Сообщение отредактировал Linky - 3.3.2009, 14:58
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Krawler
сообщение 3.3.2009, 17:29
Сообщение #90


Любит поговорить
Group Icon


Группа: Sibnet-club
Сообщений: 305
Регистрация: 24.5.2008
Из: А адресок не надо????
Пользователь №: 34 141



Репутация:   18  


» Спойлер (нажмите, чтобы прочесть) «

Да не надо реализацию в заголовочный файл вставлять smile.gif Он на то и заголовочный, что только содержит только объявления, но не реализацию... Можно просто тупо подключить заголовочный файл т.е.
Код
#include "complex.h"
а реализацию он должен сам найти


Сообщение отредактировал Krawler - 3.3.2009, 17:31
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Linky
сообщение 3.3.2009, 17:35
Сообщение #91


МЕГА флудер
Group Icon


Группа: Sibnet-club
Сообщений: 3 466
Регистрация: 31.3.2008
Из: Барнаул
Пользователь №: 27 560



Репутация:   243  


Цитата(Krawler @ 3.3.2009, 16:29) *

» Спойлер (нажмите, чтобы прочесть) «

Да не надо реализацию в заголовочный файл вставлять smile.gif Он на то и заголовочный, что только содержит только объявления, но не реализацию...

я наверно не правильно показал что в нём находится,
там только объявление класса и прототипы его функций, иначе бы компилятор ошибку выдал увидев копию этого класса в .cpp файле smile.gif
Цитата(Krawler @ 3.3.2009, 16:29) *

Можно просто тупо подключить заголовочный файл т.е.
Код
#include "complex.h"
а реализацию он должен сам найти

Такое срабатывает когда эти файлы входят в состав проекта
//А у тебя они как раз и входят в состав проекта smile.gif Ты же сам пишешь: "... разбить проект ..." - Krawler

//to Krawler,
да это ясно, с этим проектом всё норм smile.gif мне просто нужно будет потом их еще раз использовать уже в других проектах простым подключеним(не в проект) а просто через include <..>, закинув эти файлы в папку include самой среды
//2Linky
Тогда просто сделай как я тебе говорил с
Код
#ifndef <Имя_файла>_H ( или <Имя_файла>_CPP)  
#define <Имя_файла>_H ( или <Имя_файла>_CPP)          
//код    
#endif
и потом подключай оба и .h, и .cpp лишнего он не подключит smile.gif

Сообщение отредактировал Krawler - 3.3.2009, 18:03
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
mephisto
сообщение 3.3.2009, 20:39
Сообщение #92


ортодоксальный линуксоид
Group Icon


Группа: VIP
Сообщений: 7 724
Регистрация: 17.11.2007
Из: столицы вашей родины
Пользователь №: 10 849



Цитата(Linky @ 3.3.2009, 16:35) *

Такое срабатывает когда эти файлы входят в состав проекта

Да ну? А printf у тебя тоже частью проекта являться должен?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Linky
сообщение 3.3.2009, 22:01
Сообщение #93


МЕГА флудер
Group Icon


Группа: Sibnet-club
Сообщений: 3 466
Регистрация: 31.3.2008
Из: Барнаул
Пользователь №: 27 560



Репутация:   243  


Я говорил про то что если подключить заголовочный файл, где находятся только прототипы без, указания на файл где хранятся их реализация, то ничего не будет работать, покрайней мере у меня в 2-х разныех средах так.

Цитата(Krawler @ 3.3.2009, 16:29) *

Можно просто тупо подключить заголовочный файл т.е.
Код
#include "complex.h"
а реализацию он должен сам найти

» Спойлер (нажмите, чтобы прочесть) «


Насчет принтф, насколько мне известно прототип находится в stdio.h, которая в свою очередь подключает еще несколько хидеров, подключение файла где будет например просто printf(const char * __format, ...); ничего не даст, я не думаю что будет перебираться вся папка инклюд чтоб найти реализацию этой функции, а просто смотрится в подключенных к stdio.h файлах, если в них определения нету, то будет ошибка. Мне так кажется, могу ошибаться...



Сообщение отредактировал Linky - 3.3.2009, 22:23
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Linky
сообщение 4.3.2009, 1:46
Сообщение #94


МЕГА флудер
Group Icon


Группа: Sibnet-club
Сообщений: 3 466
Регистрация: 31.3.2008
Из: Барнаул
Пользователь №: 27 560



Репутация:   243  


Цитата(lunserv @ 4.3.2009, 0:42) *

а какая IDE?
в MVS есть такое средство как pragma once - можешь всё сколько угодно и куда угодно раз подключать он сам все связи правильно построит.

DevCPP, да всё впринципе нормально работает сейчас .

Сообщение отредактировал Linky - 4.3.2009, 1:49
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
mephisto
сообщение 4.3.2009, 9:05
Сообщение #95


ортодоксальный линуксоид
Group Icon


Группа: VIP
Сообщений: 7 724
Регистрация: 17.11.2007
Из: столицы вашей родины
Пользователь №: 10 849



Цитата(Linky @ 3.3.2009, 21:01) *

Я говорил про то что если подключить заголовочный файл, где находятся только прототипы без, указания на файл где хранятся их реализация, то ничего не будет работать, покрайней мере у меня в 2-х разныех средах так.

Может тебе всё же нужно взять книжку и прочитать, что такое препроцессор и что такое компоновщик(он же линкер).

Цитата(Linky @ 3.3.2009, 21:01) *

Насчет принтф, насколько мне известно прототип находится в stdio.h, которая в свою очередь подключает еще несколько хидеров, подключение файла где будет например просто printf(const char * __format, ...); ничего не даст, я не думаю что будет перебираться вся папка инклюд чтоб найти реализацию этой функции, а просто смотрится в подключенных к stdio.h файлах, если в них определения нету, то будет ошибка. Мне так кажется, могу ошибаться...


Что я делаю не так?
» Спойлер (нажмите, чтобы прочесть) «


Сразу скажу, что gcc в директорию include без спросу не лезет. Да и о существовании функции hello() при компиляции main.c gcc "не знал", тем не менее... Для лучшего понимания продолжим эксперимент:
Код

anton@bc:/tmp$ gcc main.o -o hello
main.o: In function `main':
main.c:(.text+0x12): undefined reference to `hello'
collect2: ld returned 1 exit status
anton@bc:/tmp$

Всё же функция ищется на этапе компоновки...
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Linky
сообщение 4.3.2009, 11:25
Сообщение #96


МЕГА флудер
Group Icon


Группа: Sibnet-club
Сообщений: 3 466
Регистрация: 31.3.2008
Из: Барнаул
Пользователь №: 27 560



Репутация:   243  


мб я не верно вырозился, навсякий случайно попробую еще раз
Есть заголовочный файл с прототипом функции и всё, больше там ничего нету, вообще.
Есть файл с определением этой функции, но он никаким боком не указан в заголовочном файле ни в проекте, просто хранится в папке со средой.

В основной программе подключаем только заголовок(include <..h>) и вызываем ф-ю из заголовочного файла, всё.

Препроцессор скопирует содержимое файла в месте вызова дерективы инклюд, получим прототип + main() с вызовом этой ф-и.

Цитата
Работа компоновщика заключается в том, чтобы в каждом модуле разрешить ссылки на неопределённые имена

Как компоновщик найдет реализация этой функции? он будет перебирать все файлы в поисках релизации? мне вот это интересно.

Сообщение отредактировал Linky - 4.3.2009, 11:35
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
mephisto
сообщение 4.3.2009, 11:37
Сообщение #97


ортодоксальный линуксоид
Group Icon


Группа: VIP
Сообщений: 7 724
Регистрация: 17.11.2007
Из: столицы вашей родины
Пользователь №: 10 849



Цитата(Linky @ 4.3.2009, 10:25) *

Как компоновщик найдет реализация этой функции? он будет перебирать все файлы в поисках релизации? мне вот это интересно.

Да ты, я смотрю, ниразу с библиотеками сторонними не работал...

Очевидно компоновщику явно указываются библиотеки/объектники в которых нужно осуществлять поиск. Стандартная библиотека Си подключена по-умолчанию. Замечу так же, что линковка может быть статической (когда куски кода из библиотеки выдираются и вставляются в результирующий файл) и динамической, когда необходимые библиотеки подгружаются на этапе исполнения программы (в виндах они DLL называются).
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Linky
сообщение 4.3.2009, 11:43
Сообщение #98


МЕГА флудер
Group Icon


Группа: Sibnet-club
Сообщений: 3 466
Регистрация: 31.3.2008
Из: Барнаул
Пользователь №: 27 560



Репутация:   243  


Цитата(mephisto @ 4.3.2009, 10:37) *

Очевидно компоновщику явно указываются библиотеки/объектники в которых нужно осуществлять поиск.

Помоему я про это уже n-й пост пишу, что ничего не указывая - работать не будет.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
mephisto
сообщение 4.3.2009, 12:59
Сообщение #99


ортодоксальный линуксоид
Group Icon


Группа: VIP
Сообщений: 7 724
Регистрация: 17.11.2007
Из: столицы вашей родины
Пользователь №: 10 849



Цитата(Linky @ 4.3.2009, 10:43) *

Помоему я про это уже n-й пост пишу, что ничего не указывая - работать не будет.

Тем не менее смысла существования заголовочных файлов ты так и не понял. А смысл прост: есть уже скомпилированный код на момент использования заголовочного файла код, чтобы компилятору знать как "общаться" с кодом, исходники которого вообще могут быть не доступны, пишутся прототипы функций.

Еще одно использование заголовочных файлов - определение констант, пример тому math.h, вот его фрагмент:
Код

# define M_E            2.7182818284590452354   /* e */
# define M_LOG2E        1.4426950408889634074   /* log_2 e */
# define M_LOG10E       0.43429448190325182765  /* log_10 e */
# define M_LN2          0.69314718055994530942  /* log_e 2 */
# define M_LN10         2.30258509299404568402  /* log_e 10 */
# define M_PI           3.14159265358979323846  /* pi */
# define M_PI_2         1.57079632679489661923  /* pi/2 */
# define M_PI_4         0.78539816339744830962  /* pi/4 */
# define M_1_PI         0.31830988618379067154  /* 1/pi */
# define M_2_PI         0.63661977236758134308  /* 2/pi */
# define M_2_SQRTPI     1.12837916709551257390  /* 2/sqrt(pi) */
# define M_SQRT2        1.41421356237309504880  /* sqrt(2) */
# define M_SQRT1_2      0.70710678118654752440  /* 1/sqrt(2) */

Реализации же, скажем функции sin нет нигде в директории include!
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Linky
сообщение 4.3.2009, 14:07
Сообщение #100


МЕГА флудер
Group Icon


Группа: Sibnet-club
Сообщений: 3 466
Регистрация: 31.3.2008
Из: Барнаул
Пользователь №: 27 560



Репутация:   243  


mephisto,
спс за разъяснения
ну раньше я думал(да и сейчас вроде) что основная цель заголовочных файлов это отделение той части используемого кода, которую(а именно реализацию) знать мб и не обязательно, т.е. использовать принцип инкапсуляции, тем самым упрощая проект.

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

Сообщение отредактировал Linky - 4.3.2009, 14:45
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

85 страниц V « < 3 4 5 6 7 > » 
Ответить в эту темуОткрыть новую тему
1 чел. просматривают этот форум (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Текстовая версия Сейчас: 8.7.2025, 9:15
Редакция: (383) 347-86-84

Техподдержка:
help.sibnet.ru
Размещение рекламы:
тел: (383) 347-06-78, 347-10-50

Правила использования материалов