|
Непонятный typedef |
|
|
|
Oct 15 2009, 11:30
|
Местный
  
Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846

|
Столкнулся вот с таким переопределением типа: Код typedef void (* sys_timeout_handler)(void *arg); (Это из стека lwIP) И никак не могу понять, что же из себя представляет переменная h, объявленная как Код sys_timeout_handler h; Буду признателен за подсказку.
--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
|
|
|
|
|
 |
Ответов
|
Oct 16 2009, 03:52
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(GetSmart @ Oct 15 2009, 20:42)  Процедуры и функции и прочее - это алгоритмические еденицы. Они есть везде, где есть алгоритмы. Да? А вот в языке Verilog, например, есть function и task, процедуров не завезли.  Как быть? Нет в языке С процедур. Есть только функции. Это вопрос о терминах. Если хотите, чтобы вас однозначно понимали в какой-то предметной области, будьте добры корректно употреблять легальные устоявшиеся термины. В языке программирования С нет процедур. И в языке программирования С++ нет процедур. В нем же функции-члены классов - это функции члены классов, а не методы, как их многие называют. Методы в С++ - это виртуальные функции. В другом языке, возможно, корректно называть любые функции-члены методами. Но не в С++. Когда я вижу в контексте С++ слово метод, у меня сразу включается восприятие полиморфного поведения данной функции. И очень неприятно потом узнавать, что это была обычная функция-член. Некорректное употребление терминологии - источник для путаницы. И замечание было сделано совершенно уместно. Цитата(GetSmart @ Oct 15 2009, 20:42)  Видимо проблема растёт из "нового" образования в школах/вузах. Раньше, когда в обязательном порядке изучали Паскаль ни у кого бы не возникло отторжение понятия процедуры. Проблема растет из недостаточного знания матчасти и/или небрежного отношения мелочам. И это зря. "Профессионал отличается от любителя отработкой мелочей" (с).
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Oct 16 2009, 08:43
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(AHTOXA @ Oct 16 2009, 14:57)  Первый раз слышу о таком разделении. Где такое прописано? Терминология идет, как уже было сказано, с ООП языков, но там проще в этом смысле - там все функции объектов являются методами. Что касается С++, то про упомянутое, в частности, есть фраза Б.Страуструпа (The C++ Programming Language, Third Edition by Bjarne Stroustrup. Copyright ©1997 by AT&T. Published by Addison Wesley Longman, Inc. ISBN 0-201-88954-4., 12.2.6 Virtual Functions): To allow a virtual function declaration to act as an interface to functions defined in derived classes, the argument types specified for a function in a derived class cannot differ from the argu- ment types declared in the base, and only very slight changes are allowed for the return type (§15.6.2). A virtual member function is sometimes called a method.A virtual function must be defined for the class in which it is first declared (unless it is declared to be a pure virtual function; see §12.3). Думается, Страуструп является авторитетным дяденькой в контексте С++, и он тут не оригинальничает - следует общепринятому подходу. Да, и по смыслу метод - это переопределенное (т.е. измененное в наследниках) действие объекта, и таким свойством обладает как раз (и только) виртуальная функция в С++. А в чистых ООП языках ничего кроме методов и нет.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Oct 16 2009, 09:12
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Ясно, спасибо. Замечу всё же, что "иногда называют методом" - это весьма нестрого, и не тянет на строгое терминологическое определение  ----- Я тут ещё вот что подумал... Цитата(dxp @ Oct 16 2009, 14:43)  Да, и по смыслу метод - это переопределенное (т.е. измененное в наследниках) действие объекта Это ведь чисто умозрительно. Если уж речь идёт о точной терминологии, то надо оперировать какими-то более весомыми определениями, чем "по смыслу". Я, например, не нашёл указаний, что метод должен быть обязательно переопределяем. Вот например, из википедии: Цитата Метод в объектно-ориентированном программировании - это функция, принадлежащая какому-то классу или объекту. Никаких намёков на переопределяемость.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
Сообщений в этой теме
Harvester Непонятный typedef Oct 15 2009, 11:30 GetSmart Цитата(Harvester @ Oct 15 2009, 17:30) И ... Oct 15 2009, 11:33 Harvester Цитата(GetSmart @ Oct 15 2009, 14:33) Под... Oct 15 2009, 11:47 andrew_b Цитата(GetSmart @ Oct 15 2009, 15:33) h -... Oct 15 2009, 11:50  GetSmart Цитата(andrew_b @ Oct 15 2009, 17:50) На ... Oct 15 2009, 11:52   andrew_b Цитата(GetSmart @ Oct 15 2009, 15:52) про... Oct 15 2009, 12:04    kurtis Цитата(andrew_b @ Oct 15 2009, 15:04) В... Oct 15 2009, 12:08    GetSmart Цитата(andrew_b @ Oct 15 2009, 18:04) В... Oct 15 2009, 12:10     andrew_b Цитата(GetSmart @ Oct 15 2009, 16:10) Не ... Oct 15 2009, 12:36      GetSmart Цитата(andrew_b @ Oct 15 2009, 18:36) К ч... Oct 15 2009, 13:07       andrew_b Цитата(GetSmart @ Oct 15 2009, 17:07) Дор... Oct 15 2009, 13:23        demiurg_spb Цитата(andrew_b @ Oct 15 2009, 17:23) Реч... Oct 15 2009, 16:03 kurtis Цитата(Harvester @ Oct 15 2009, 14:30) Ст... Oct 15 2009, 11:52 Flexz Давным-давно в паскале процедурой называлась функц... Oct 15 2009, 12:12 zltigo Цитата(Flexz @ Oct 15 2009, 15:12) Давным... Oct 15 2009, 12:31 sigmaN Да все знают. И ответ топикстартеру был понятен.
П... Oct 15 2009, 12:55 _Pasha Цитата(sigmaN @ Oct 15 2009, 15:55) Да вс... Oct 15 2009, 15:12  GetSmart Цитата(_Pasha @ Oct 15 2009, 21:12) Кодvo... Oct 16 2009, 21:20     dxp Цитата(AHTOXA @ Oct 16 2009, 16:12) Ясно,... Oct 16 2009, 10:09      AHTOXA Цитата(dxp @ Oct 16 2009, 16:09) Ключевое... Oct 16 2009, 10:20       dxp Цитата(AHTOXA @ Oct 16 2009, 17:20) Откуд... Oct 16 2009, 13:41        AHTOXA Цитата(dxp @ Oct 16 2009, 19:41) Т.е. ООП... Oct 16 2009, 15:44         AHTOXA Цитата(AHTOXA @ Oct 16 2009, 21:44) Всё р... Oct 16 2009, 21:20         dxp Цитата(AHTOXA @ Oct 16 2009, 22:44) Всё р... Oct 17 2009, 05:31          AHTOXA Цитата(dxp @ Oct 17 2009, 11:31) Если он ... Oct 17 2009, 08:49           dxp Цитата(AHTOXA @ Oct 17 2009, 15:49) Если ... Oct 17 2009, 12:46            AHTOXA Цитата(dxp @ Oct 17 2009, 18:46) P.S. Что... Oct 17 2009, 14:14  GetSmart Цитата(dxp @ Oct 16 2009, 09:52) Да? А во... Oct 16 2009, 10:15   dxp Цитата(GetSmart @ Oct 16 2009, 17:15) Под... Oct 16 2009, 13:08    GetSmart Цитата(dxp @ Oct 16 2009, 19:08) А где на... Oct 16 2009, 13:29    GetSmart Цитата(dxp @ Oct 16 2009, 19:08) Речь не ... Oct 16 2009, 14:29     _Pasha Цитата(GetSmart @ Oct 16 2009, 17:29) Это... Oct 16 2009, 19:18 GetSmart Дайте _Pashе медаль. И ещё одну, за занудство Oct 15 2009, 15:22 ARV имхо, профессионалу наплевать, как обозвать структ... Oct 16 2009, 04:33 dxp Цитата(ARV @ Oct 16 2009, 11:33) имхо, пр... Oct 16 2009, 06:24  GetSmart Цитата(dxp @ Oct 16 2009, 12:24) Угу. Дав... Oct 16 2009, 10:24 GetSmart Спрашивается - зачем так настойчиво выяснять разли... Oct 18 2009, 03:17 dxp Цитата(GetSmart @ Oct 18 2009, 10:17) Спр... Oct 18 2009, 04:07  GetSmart Цитата(dxp @ Oct 18 2009, 10:07) Путаница... Oct 18 2009, 06:32
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|