|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
31.07.2011, 17:25 | #1 |
Новичок
Джуниор
Регистрация: 31.07.2011
Сообщений: 5
|
Библиотеки C и языка С++
Всем привет! Можете ответить, почему в программу на C можно вставлять функции из C++? Например, функция int mkdir(char *) из заголовочного файла C++ direct.h спокойно работает на C. Не путать c int mkdir(const char *, mode_t) из библиотеки C POSIX sys/stat.h! При написании программы на C я не могу добавить direct.h, потому что он из C++, поэтому я сделал так:
Код:
|
31.07.2011, 17:44 | #2 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2McLeod
и в реале ты скорей всего вызываешь как раз int mkdir(const char *, mode_t). ибо линковщику пофиг на колво и типы агрументов, он просто нашел имя mkdir и его использует. в сях ты даже можешь не объявить прототип функции, можешь просто написать Код:
пс. это С, детка
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 31.07.2011 в 17:47. |
31.07.2011, 17:50 | #3 |
Новичок
Джуниор
Регистрация: 31.07.2011
Сообщений: 5
|
Теперь написал так:
Код:
/usr/include/sys/stat.h:321:12: note: declared here Так что не все так просто. |
31.07.2011, 17:53 | #4 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2McLeod
правильно, потому что в области видимости появилось объявление функции int mkdir(const char *, mode_t) ! естественно, теперь от тебя компилятор будет требовать ПОЛНОГО совпадения кол-ва и типа аргументов в случае же Код:
в с++ такое не прокатывает потому, что имя функции кореллируется с набором и типами ее аргументов (перегрузка). т.е линкеру не будет доступно имя mkdir, он увидит mkdit_blabla1 (функция с 1 параметром), mkdir_blabla2 (функция с двумя параметрами). в сях перегрузки нет, поэтому линкер видит именно mkdir, ничего не зная о ее параметрах.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 31.07.2011 в 17:57. |
31.07.2011, 17:56 | #5 |
Новичок
Джуниор
Регистрация: 31.07.2011
Сообщений: 5
|
Теперь понятно, спасибо! Кстати папка создалась с правами d--xr--r-t
Еще где можно подробнее узнать про то каким образом линковщик ищет функцию. Последний раз редактировалось Stilet; 31.07.2011 в 19:18. |
31.07.2011, 17:59 | #6 | |||
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2McLeod
это случайность, яж говорю, там будет мусор Цитата:
Цитата:
пс. да и вообще, почему strace не используешь? Код:
Цитата:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось Stilet; 31.07.2011 в 19:27. |
|||
31.07.2011, 18:07 | #7 |
Новичок
Джуниор
Регистрация: 31.07.2011
Сообщений: 5
|
|
31.07.2011, 18:10 | #8 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2McLeod
у страуструпа ничего подробного по этой теме нет. если не собираешься линкер писать, этой информации достаточно. более подробно видимо тут но руки не дошли почитать
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
31.07.2011, 18:10 | #9 |
Новичок
Джуниор
Регистрация: 31.07.2011
Сообщений: 5
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Зависимость библиотеки от библиотеки | ds.Dante | C# (си шарп) | 2 | 07.07.2011 12:55 |
смена языка | Dimarik | Visual C++ | 2 | 28.01.2011 22:26 |
Циклы языка С++ ( | saammy | Общие вопросы C/C++ | 8 | 29.11.2010 21:49 |
Выбор языка | blackz | Свободное общение | 10 | 15.05.2010 17:07 |
Сохранение языка | Dop | Общие вопросы Delphi | 5 | 07.08.2009 18:31 |