|
|
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Как в Си разделить программу на два можуля? В Delphi просто создаются несколько модулей и включаются словом uses. Нужно разделить функцию коннекта и основную программу (функция коннекта будет использоваться в зазных программах). Читал про include, но не понял, что нужно прописывать в .h файлах заголовков. Если несложно приведите простенький пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 12:52 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 13:07 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ, примерно так и делал, но не получается. cat connect.c: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. cc -c -I/usr/local/pgsql/include connect.c Затем компилирую основную прогу, выдается следующее: Код: plaintext 1. prog.c: undefined reference to `con' collect2: ld returned 1 exit status make: *** [default] Error 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 14:14 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
htttСпасибо за ответ, примерно так и делал, но не получается. cat connect.c: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. cc -c -I/usr/local/pgsql/include connect.c Затем компилирую основную прогу, выдается следующее: Код: plaintext 1. prog.c: undefined reference to `con' collect2: ld returned 1 exit status make: *** [default] Error 1 Так conn() или con()? Новый файл в проект не забыл добавить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 14:25 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
con, в последней проге вручную набирал и ошибся. Что значит "добавить новый файл в проект"? Если про инклуде, то #include "inc/connect_db.h" в основной программе есть. Пробовал и абсолютный путь указывать и в Makefile все прописал вроде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 14:34 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
Нужно ли компилировать прогу с функцией con() или достаточно объектного файла? При компиляции выдается Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 14:42 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
htttНужно ли компилировать прогу с функцией con() или достаточно объектного файла? При компиляции выдается Код: plaintext 1. 2. 3. Нужно компилировать cpp файл с этой функцией. Потом он должен линковаться с тоже откомпелированным файлом, содержащим функцию main(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 14:59 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
хмм… extern void con(); ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 15:07 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
maXmoхмм… extern void con(); ? Нах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 15:27 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
если функция не экспортируется, оптимизатор вообще может её выкинуть нах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 15:32 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
maXmoесли функция не экспортируется, оптимизатор вообще может её выкинуть нах. Если, честно - первый раз слышу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 15:48 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
maXmoгнутый может выкинут ни разу еще не обижал. Могу поручаться за 3.3.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 15:49 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
unit-at-a-time появился в 3.4 хотя может чел просто неправильно линкует прогу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 16:08 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
Напишите, плз, как правильно компилить и линковать в таком случае функцию и основную прогу. Функцию компилю так: Код: plaintext Прогу командой make с Makefile: Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 16:14 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
ну и в камом месте ты подрубаешь в прогу ранее скомпиленный connect? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 16:19 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 16:23 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
ой :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 16:24 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
ещё в аргументы заданий следует включить изменяемые хедеры, буде таковые имеются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 16:32 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за помощь, все работает. PS: Не могу найти хороших статей или книг по этой теме, может у кого-то есть ссылки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 16:36 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
htttВсем спасибо за помощь, все работает. PS: Не могу найти хороших статей или книг по этой теме, может у кого-то есть ссылки? Может почитать Эффективное использование GNU make ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 17:14 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
maXmounit-at-a-time появился в 3.4 хотя может чел просто неправильно линкует прогу Нашел: http://saratov.lug.ru/cgi-bin/index.cgi?action=view&id_news=449 20-04-2004 GCC 3.4 [ sinaps ] Перекомпилированные заголовки, дополнительная оптимизация и улучшенная совместимость с ISO/ANSI C++ GCC 3.4 - крупное обновление одной из базовых частей любого дистрибутива Linux. В числе основных изменений: новая схема компиляции "unit-at-a-time" для языков C, Objective-C, C++ и Java (автоматически включается на уровне -O2 и служит для обнаружения недостижимых функций и переменных, локальных функций и т.п. Обеспечивает общий прирост производительности на уровне 1,3 процента); пересмотренный механизм раскрутки циклов; перекомпилированные заголовки ("precompiled headers", увеличивают скорость компиляции, но имеют кое-какие дефекты в текущей реализации), существенно улучшенная совместимость со стандартом ISO/ANSI C++ и поддержка больших файлов (до 2Гб на 32-битных платформах). Для сборки GCC теперь требуется GNU Make и ISO C90-совместимый компилятор C. Это оно? Что за "недостижимые" функции и прочее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 17:27 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
а хз, ну раз всё пашет, значит не нужен экстерн, просто раньше функции, кажется, не экспортировались, если екстерн не указать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 17:35 |
|
||
|
Модули в Си
|
|||
|---|---|---|---|
|
#18+
maXmoа хз, ну раз всё пашет, значит не нужен экстерн, просто раньше функции, кажется, не экспортировались, если екстерн не указать. Да, ну, их динозавров. Меня интересует 3.4. Я так понял, что там ввели какой-то unit-at-a-time, который опять по какой-то причине extern требует (какая-то оптимизация). Ты обмолвился, что в курсе этой темы. Вот я и хочу, что бы уточнил этот момент. Если я что-то не правельно понял, то что означаю т эти слова: unit-at-a-time появился в 3.4 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 17:57 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34502792&tid=2028926]: |
0ms |
get settings: |
5ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
80ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 383ms |

| 0 / 0 |
