cdecl

    2热度

    2回答

    我正在使用visual studio处理现有的C++项目,并且我发现几乎每个函数声明都在函数名前面有一个__cdecl,如:void __cdecl functionName()。然后我跳到的__cdecl的定义,其定位在winnt.h文件: #if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) #define NTAPI __stdcall

    0热度

    1回答

    我正在开发一个项目,其中有一些传感器,我希望它们通过USB连接到PC。现在他们写了一个用lib编写的windows lib,并且所有函数都使用c的cdecl调用约定,而且我必须确定,如果我使用其他语言(java!)编程,则会给出调用约定。 所以我研究了一下,发现了一些教程来绑定dll在java中或使用JNA。但这对我来说都是新事物,我想确定它是可能的(也可能是一个例子) - 该设备并不便宜,我想在

    0热度

    1回答

    在为调试器实现堆栈步行器时我正在努力达到了将参数提取到函数调用并显示它们的目的。为了简单起见,我开始使用纯32位(包括调试器和调试器)的cdecl约定和一个带3个参数的函数。然而,我不明白为什么堆栈跟踪中的参数与cdecl定义的参数(从右到左,没有任何寄存器)相比没有规律,尽管现在试图找出它几天。 下面是函数调用我试图堆栈跟踪的表示: void Function(unsigned long lon

    1热度

    1回答

    我必须写在asm函数,以及i在C原型 void fdct(float *in, float *out, unsigned int n); 其中: in:指针输入数据缓冲器 out:指针outcoming数据缓冲器 n:数据矩阵的数量。 函数不会返回任何内容,但会与输出数据的数组一起使用,并且必须根据结果进行更改。 据我了解,在CDECL栈看起来像: esp: ret esp+4: *in -

    4热度

    1回答

    在GCC cdecl调用约定中,我可以依赖在调用返回后我推入堆栈的参数是否相同?即使混合使用ASM和C并且启用了优化(-O2)?

    -1热度

    1回答

    一个面试问题的cdecl关键字出现较强的混乱在我的脑海即让我们看看这个节目 #include "stdio.h" int main() { static int a=25; void cdecl conv1(); void pascal conv2(); conv1(a); conv2(a); return 0; } void

    1热度

    1回答

    今天在我的采访中有一个这样的问题。 #include <stdio.h> int main(void) { char *s="123456790"; printf("%c,%c",*(char *)((int *)s+++1),*s); return 0; } 我的回答是5,1,但采访者说是5,2! 当然,我知道C中的默认调用约定是__cdecl,参数传递

    0热度

    1回答

    去这里:http://cdecl.org/ 输入: char (*arr)[5] 输出: 声明改编为字符指针 什么是 “排列5” 的阵列5?这是否仅仅意味着一个包含5个元素的数组?

    3热度

    2回答

    我正在为一个项目生成一个用于离线测试的虚拟DLL。我们有真正的DLL和它的头文件,虽然它们看起来不兼容。在DLL的名称是未重整但功能的前置声明声明被召唤出来为__stdcall: example.h文件 DWORD __stdcall DoSomething(byte aByte); example.dll中的Dependency Walker: 2 (0x0002) 2 (0x0002) D

    2热度

    1回答

    我无法找到答案。从我读过的%ebp有32位,将%esp移动到%ebp,你仍然会有32位,然后减去70到32,我不明白其余的。我对此很陌生,所以我不是很精通。请给出详细的解释。谢谢! 下面是我遇到的问题。 在这个指令序列的末尾,多少个字节将esp和程序堆栈上存储的返回地址分开?假设我们使用标准的32位x86调用约定来调用这个函数。 804847c functioname: 804847c: pus