Вопросы с тегом 'cdecl'

Все, что связано с соглашением о вызове `cdecl`, то есть одной из конвенций общего вызова подпрограмм, используемых в системах с архитектурой x86.
9 отв.

stdcall и cdecl

Существуют (среди прочих) два типа соглашений вызова - stdcall и cdecl. У меня к ним мало вопросов: Когда вызывается функция cdecl, как вызывающий знаете, если он должен освободить стек? На сайте вызова выполняется ли вызывающий абонент знает, ...
04 авг. '10 в 12:51
2 отв.

Почему вызовы Cdecl часто несовместимы в "стандартной" конвенции P/Invoke?

Я работаю над довольно большой базой кода, в которой функциональность С++ P/Вызывается из С#. В нашей кодовой базе есть много вызовов, таких как... С++: extern "C" int __stdcall InvokedFunction(int); С соответствующим С#: [DllImport("CPlusPlus....
27 марта '13 в 16:58
12 отв.

Как вы читаете декларации C?

Я слышал о некоторых методах, но никто из них не застрял. Лично я стараюсь избегать сложных типов в C и пытаюсь разбить их на компонент typedef. Теперь я столкнулся с сохранением некоторого унаследованного кода от так называемого "трехзвездочного пр...
18 сент. '08 в 3:57
4 отв.

Что означает "cdecl"?

Да, я знаю, что "cdecl" - это название выдающегося соглашения о вызове, поэтому, пожалуйста, не объясняйте мне вызовы. Я спрашиваю, что означает аббревиатура (?) "Cdecl". Я думаю, что это плохой выбор именования, потому что на первый взгляд он напо...
14 февр. '11 в 0:00
4 отв.

Изменение Конвенции о вызовах

У меня есть сторонний API C, который ожидает функцию обратного вызова __stdcall. Мой код имеет внешнюю функцию __cdecl. Я не могу передать свой указатель на C-API, поскольку они считаются разными типами. В обход системы типов и с помощью reinter...
30 окт. '16 в 9:57
2 отв.

Почему я не должен использовать __fastcall вместо стандартного __cdecl?

Я бы прослушал некоторых людей, говорящих, что __fastcall быстрее, чем __cdecl и __stdcall заставляет его вставлять два параметра в регистр, а не один из других вызовов; но, с другой стороны, это не стандарт, используемый в C. Я хотел бы знать, что...
26 окт. '12 в 18:21
11 отв.

Есть ли способ вызвать функцию-член без оператора. * Или → *

Ниже метод вызова функции D::foo с помощью функции указатель-член генерирует ошибку: должен использовать .* или ->* для вызова функции указатель-член в 'f (...) .. Конечно, это не то, как мы вызываем функции указателя на член. Правильный способ...
09 окт. '13 в 13:26
1 отв.

Почему go компилятор "gc" использует другое соглашение о вызове, чем C?

C использует cdecl, с которым я смотрел и вызывал из сборки. Он чувствует себя достаточно хорошо, поэтому зачем нарушать совместимость? Зачем нужна другая конвенция?
01 апр. '13 в 1:44
1 отв.

AccessViolationException, когда PInvoking С++ DLL (проблема вызова вызова cdecl?)

Я провел весь день, исследуя это, и я не мудрее: У меня есть С# DLL, которая PInvokes метод в С++ DLL. У меня не было никаких проблем с этим при компиляции в режиме Debug, но при компиляции в режиме Release я получаю AccessViolationException. Перейт...
09 мая '11 в 17:37
0 отв.

64-разрядные функции передачи С++ с "разными" вызовами в качестве параметров дают неоднозначную ошибку

Моя цель состоит в том, чтобы легко извлечь прототип произвольной функции как с вызовами __cdecl, так и с __stdcall. Он отлично работает в 32-битном режиме. Единственное, что меняется, это соглашение вызова в моих параметрах функции шаблона. Согласн...
05 мая '16 в 20:12
5 отв.

В С++ выполняются ли переменные функции (те, у которых... в конце списка параметров), обязательно следуйте за вызовом __cdecl?

Я знаю, что функции __stdcall не могут иметь эллипсы, но я хочу быть уверенным, что нет платформ, поддерживающих функции stdarg.h для вызова соглашений, отличных от __cdecl или __stdcall.
25 марта '10 в 5:22
1 отв.

С++ и FULLY динамические функции

У меня проблема с обходами. Обход, как вы все знаете, может перемещаться только между 5 байтами пространства (например, "jmp" и 4-байтовый адрес). Из-за этого невозможно иметь функцию "hook" в классе (методе), вы не можете указать указатель 'thi...
04 мая '12 в 18:17
3 отв.

С#/.NET Generics и ошибка Cdecl Varargs?

Почему Foo() преуспевает, но Bar() выбрасывает BadImageFormatException? using System.Runtime.InteropServices; using System.Text; static class Program { [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)] static extern in...
01 мая '11 в 10:27
3 отв.

Принудительный префикс __cdecl с подчеркиванием

Моя компания предоставляет стороннюю группу DLL, которая предоставляет им функции API, которые они могут использовать для подключения к нашему приложению. DLL была написана в VC9, а в функциях API используется соглашение о вызове по умолчанию VC (__c...
13 мая '11 в 9:30
3 отв.

как структуры передаются как параметры в сборке

Как структуры передаются как параметры в сборке? Так как структуры имеют размеры, большие, чем обычно, отдельные поля передаются последовательно? Если они находятся в обратном порядке, как и обычные параметры? Существуют ли какие-либо различия меж...
06 мая '15 в 7:01