C, PASCAL (parameter passing conventions)
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1377
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
C, PASCAL (parameter passing conventions)
На 6.3 с PASCAL тоже компилилось, но вылетало при попытках работы
C, PASCAL (parameter passing conventions)
Все правильно, компилится будет. Можно убрать вообще и C, и PASCAL, и RAW, компилится будет. Не будет компилится только если убрать NAME. Но работать не будет - будет вылетать, т.к. параметры будут передаваться неправильно - об этом писал выше.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7375
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
C, PASCAL (parameter passing conventions)
Привет !
Все нормально. Здесь скорее проблема с переводом справки.
Параметры C / Pascal не определяют порядок передачи параметров.
Смотрим русскоязычную справку:
-------------------------------------------
Атрибуты C и PASCAL в прототипе процедуры указывают, что параметры всегда передаются через стек.
В 32-х битных программах, и в С и в Паскаль языках параметры помещаются в стек справа налево по списку параметров.
Отличия заключаются в очистке стека при возврате (вызов (C) или вызов (PASCAL)).
Также в C/C++ имеются отличия в усечении внешних имен, но в Clarion усечение имен такое как для C и PASCAL.
-------------------------------------------
Посмотрел свои рабочие исходники, а также Libsrc разных версий Clarion: совместное описание C / Pascal
в рамках одной программы используются во многих прототипах и абсолютно никак не влияют на работу ....
За теми кто отстал - не возвращаться. (С) Кодекс
C, PASCAL (parameter passing conventions)
Должны определять! Т.к. в Паскале параметры запихиваются в стек, начиная с первого. Поэтому процедуры, написанные на Паскале не могут иметь переменное кол-во параметров, оно заранее определено и процедура сама может очистить стэк. А в С наоборот, сначала запихивается последний. На верху стэка всегда первый параметр, поэтому С-шные процедуры могут иметь переменное кол-во параметров и именного поэтому она не может очистить стэк, а стэк очищает код, который вызывал процедуру. Но соглашения, в современных версиях языков, можно легко менять - в Кларионе аналог pragma.