|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.03.2010, 18:22 | #11 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Я то вижу, но не ясно как транслятор допускает со скобками объявлять, смысл скобок не ясен теперь
p.s. все таки было сказано верно, С++ - это язык который надо знать, чтобы не допускать ошибки в других языках ) |
15.03.2010, 18:24 | #12 | |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2BOBAH13
ты не понимаешь, что такое char* malloc(); ? уже ведь все на виду) Цитата:
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 |
|
15.03.2010, 18:26 | #13 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
с -Wall выдает предупреждение что malloc() и strcpy() не объявлены, но все равно работает =))
Добавлено: Я кажись понял что должно было произойти =)) Мы сами объявили прототип malloc, а компилятор должен найти ее реализация в стандартной библиотеке. Только malloc должна возвращать void =))
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Последний раз редактировалось Blade; 15.03.2010 в 18:28. |
15.03.2010, 18:30 | #14 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2Blade
ну древний гцц.... маллок давно уже не билд ин.. чорд. там сверху не могут увидеть объявление функции, а я открываю все карты.... ладно, вопрос такой. почему, объявив свою функцию маллок, как char* malloc(); мы все равно можем использовать ее, как char* a = malloc(128)? считайте, что объявление обязательно
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 |
15.03.2010, 18:38 | #15 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
А почему не должны моч? =)
В нашем варианте malloc возвращает указатель на char и мы записываем его в переменную a, которая тоже является указателем на char, т.е. обычной Си-строкой. Это эквивалентно тому, как делают обычно: Код:
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
15.03.2010, 18:47 | #16 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2Blade
потому что стандартная функция malloc возвращает void*, и имеет входящий параметр. и чтобы использовать стандартную функцию маллок, нужно подключить хидер с ее объявлением. (попробуй на четвертом гцц например, пошлет далеко и надолго. просто имеется ряд либсишных функций, о которых компиль знает, и не требует их объявления до использования. маллок более не является такой функцией, поэтому я ее и выбрал в качестве примера). а мы же объявили свой прототип маллока, но так же вызываем его с параметром. почему это компилируется?) если не нравится маллок, могу привести пример с user-defined функцией, неважно. просто думал она никогда не была build-in
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 |
15.03.2010, 18:59 | #17 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Ну если мы объявляем функцию без входных параметров, по стандарту Си это значит что о параметрах этой функции ничего не известно и мы можем передать ей любые параметры (на сколько я помню).
Для меня теперь остался один вопрос, как компилятор находит реализацию malloc, ведь память как-то выделяется, да и если мы попытаемся использовать функцию для которой есть прототип, но нет реализации - получим ошибку линковки
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
15.03.2010, 19:02 | #18 | |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2Blade
Цитата:
а почему это работает. с точки зрения компилятора мы ничего не нарушили. лишний параметр не проблема. и тут вступает линковщик, которому абсолютно пофиг на наши параметры и тип возвращаемого значения, но т.к libc линкуется по умолчанию, он находит ее реализацию в данной библиотеке по имени) а вот если смотреть на все это в самом первом примере, то и не сразу дойдет (я на второй день только осилил. препод по сям сходу тож не смог) пс. если кому-то интересно, откуда я это взял - http://www.cise.ufl.edu/~manuel/obfuscate/intrp.c. have a fun)
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; 15.03.2010 в 19:05. |
|
15.03.2010, 19:12 | #19 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Угу, именно поэтому я всегда говорю что не хорошо писать
Код:
Кстати по стандарту C++ эта конструкция абсолютно верна, т.к. там подразумевается void, если отсутствует список аргументов. Различия весьма тонкие, за то интересные =))
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
15.03.2010, 20:28 | #20 | |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Цитата:
2. malloc(128); - как видим передается один аргумент типа int наверняка. Спрашивается, где проверки синтаксиса в таком случае ? |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
...... и опять С++ | Chaynik011091 | Помощь студентам | 5 | 24.06.2009 20:46 |
И опять мэйлы.. Опять... | Pusher | PHP | 6 | 28.06.2008 03:08 |
опять кодировка) | mager | JavaScript, Ajax | 1 | 22.05.2008 16:41 |
Опять Chart | BigBB | Помощь студентам | 32 | 29.04.2008 22:41 |
Опять ListBox | Rahim1993 | Общие вопросы Delphi | 3 | 15.01.2008 20:21 |