cdecl相关内容

您如何阅读 C 声明?

我听说过一些方法,但没有一个被卡住.我个人尽量避免在 C 中使用复杂类型,并尝试将它们分解为组件 typedef. 我现在面临着维护所谓“三星级程序员"的一些遗留代码的问题,而且我很难阅读一些 ***code[][]. 您如何阅读复杂的 C 声明? 解决方案 本文解释了一个相对简单的 7 条规则,如果您发现自己想要或需要手动阅读任何 C 声明,它们将让您阅读:http://ww ..
发布时间:2021-12-02 08:23:07 其他开发

PInvoking C++ DLL 时出现 AccessViolationException(cdecl 调用约定问题?)

我花了一整天的时间研究这个,但我一点也不聪明: 我有一个 C# DLL,它 PInvokes 一个 C++ DLL 中的方法.在调试模式下编译时,我没有遇到任何问题,但是在发布模式下编译时,我得到一个 AccessViolationException.谷歌搜索这个问题告诉我,这可能是不符合调用约定的问题.代码现在在 C# 中看起来像这样: [返回:MarshalAs(UnmanagedTy ..
发布时间:2021-11-26 20:14:00 C#/.NET

"cdecl"是什么意思?代表?

是的,我知道"cdecl"是重要的调用约定的名称,所以请不要向我解释调用约定.我要问的是缩写(?)"cdecl"实际上代表什么.我认为这是一个糟糕的命名选择,因为乍一看它使人想起"C声明符"(C的一个非常独特的语法方面).实际上,有一个名为 cdecl 的程序,其唯一目的是解密C声明符.但据我所知,C声明符语法与调用约定完全无关. 简化版本:"stdcall"代表“标准调用约定"."cdec ..
发布时间:2021-04-19 20:51:26 C/C++开发

在C ++中,可变参数函数(那些在参数列表末尾带有...的函数)是否必须遵循__cdecl调用约定?

我知道__stdcall函数不能有省略号,但是我想确保除__cdecl或__stdcall之外,没有平台支持stdarg.h函数来调用约定. 解决方案 调用约定必须是调用者从堆栈中清除参数的一种约定(因为被调用者不知道将传递什么). 尽管不一定与Microsoft所说的"__cdecl"相对应.举例来说,在SPARC上,它通常会在寄存器中传递参数,因为这是SPARC设计的工作方式-如 ..
发布时间:2020-07-19 19:36:25 C/C++开发

C语言中的Pascal和cdecl关键字

面试问题在我的脑海中引起了极大的困惑,即让我们看一下这个程序 #include "stdio.h" int main() { static int a=25; void cdecl conv1(); void pascal conv2(); conv1(a); conv2(a); return 0; } void cdecl conv1(i ..
发布时间:2020-07-19 19:36:20 其他开发

将参数从C传递给汇编程序?

如何将参数从C main函数传递给汇编函数?我知道我的自定义函数必须类似于: void function(char *somedata) __attribute__((cdecl)); 现在我将如何在汇编文件中使用somedata.我的操作系统是Linux Ubuntu,处理器是x86. 解决方案 对此我有点不满意,但希望本示例可以助您一臂之力.我已经对其进行了测试,并且可以正常 ..
发布时间:2020-07-19 19:36:15 其他开发

__cdecl强制带下划线的前缀

我的公司向第三方提供了一个DLL,为他们提供了可以用来连接我们的应用程序的API函数。该DLL是用VC9编写的,API函数使用VC的默认调用约定(__cdecl)。第三方已经在这个界面上构建了它们的应用程序。 我现在已经有了编写DLL更新版本的任务。我们希望DLL具有与旧版本完全相同的界面,因此可以互换使用。不幸的是,我们的开发环境现在是CodeGear RAD Studio 2007,所以 ..
发布时间:2017-06-08 19:53:23 C/C++开发

stdcall和cdecl

有两种类型的调用约定:stdcall和cdecl。我有几个问题。 当调用者调用cdecl函数时,调用者 如何知道是否应释放堆栈?在调用站点, 调用者是否知道被调用的函数是cdecl还是stdcall 函数?它是如何工作的 ?调用者如何知道是否应该 释放堆栈? 如果一个被声明为stdcall的函数调用一个函数( 有一个调用约定为cdecl),或者反过来, 这不恰当吗? 一般来说 ..
发布时间:2016-10-13 10:04:00 C/C++开发

PInvoking C ++ DLL时AccessViolationException(cdecl调用约定的问题?)

我花了一整天研究这个,我仍然不明白: 我有PInvokes在C ++ DLL的方法的C#DLL。我有没有问题,在调试模式下编译时这样做,但在Release模式编译时,我得到一个AccessViolationException。谷歌搜索这个问题告诉我,这可能是与调用不遵医嘱约定的问题。现在的代码看起来像这样在C#中: [返回:的MarshalAs(UnmanagedType.U1) 函 ..
发布时间:2016-10-04 22:33:37 C#/.NET

你怎么看C声明?

我听到的一些方法,但他们都没有坚持。我个人尽量避免复杂的类​​型在C和尝试将它们分解成组件的typedef。 我现在面临着来自所谓的“三星级程序员”保持一些遗留code和我有一个很难看的一些*** code [] []的。 你如何阅读复杂的C声明? 解决方案 本文介绍一个比较简单的7规则,这将让你阅读任何C声明,如果你发现自己想要或者需要手动操作:的 http://www.ericgi ..
发布时间:2016-08-17 20:42:31 C/C++

我如何使用__cdecl调用约定编译提升?

我 __ CDECL 使用编译项目调用约定(msvc2010),我使用相同的编译器使用默认设置编译的推动作用。 该项目以提振联系,但我在运行时我得到了这样的断言消息: 文件:... \\提升\\提升\\ program_options \\详细\\ parsers.hpp 行:79 运行时检查失败#0 - ESP的值未正确保存跨函数调用。这通常是调用带有一个不同的调用约定声明的函数指针执行 ..
发布时间:2016-08-12 19:05:48 C/C++

。有没有办法来调用成员函数没有*或 - > *运算符

以下调用 D :: foo的函数通过指针到成员函数会产生错误的方法:必须使用 * 或 - > * 来调用指针到成员函数“F(...) 当然..这不是我们如何调用指针到成员函数。 调用的正确方法是(D * F。)(5); 或(对GT; * F)(5) ; 我的问题是,“有没有办法来调用类的成员函数,而不在左边的类对象?我不知道,我们可以通过类对象(这个)作为常规参数? 在我的脑海里,在 ..
发布时间:2016-08-12 17:57:27 C/C++开发

调用一个函数,它可以是的cdecl或STDCALL

我需要写code调用,可以在32位Windows应用程序,无论是STDCALL调用或CDECL外部函数。结果 我的code,来电,也不能提前知道哪个这些公司将是。 现在,如果我尝试调用从被定义为STDCALL调用网站的cdecl函数,我得到一个checkEsp例外对话框,然后我猜这是有一个很好的理由。结果 有没有办法做到这一点? 解决方案 它可以下列方式进行: MOV ESI,E ..
发布时间:2016-07-18 21:19:39 .NET Framework

C ++和完全动态的功能

我有弯路问题。少走弯路,大家都知道,只有5个字节的空间(即一个“JMP”电话和一个4字节地址)之间移动。正因为如此,不可能在一个类(方法),您不能提供'这个'指针'钩子'的功能,因为根本就没有足够的空间( ..
发布时间:2016-07-18 21:17:10 C/C++开发

为什么没有崩溃的PInvoke的情况下侵犯调用约定(在.NET 3.5)的?

我的解决方案有一个托管C ++ DLL,其中出口功能,以及托管应用程序PInvokes此功能。 我刚刚转换的解决方案,从.NET 3.5到.NET 4.0和得到这个PInvokeStackImbalance的“,调用PInvoke的函数[...]有不平衡栈”的异常。事实证明,我打电话__cdecl'ed功能,因为它是__stdcall: C ++部分(被叫): __ declspec(dl ..
发布时间:2015-11-26 18:31:46 C#/.NET