获取DLL中导出函数的签名

是否有可能从DLL中获取导出的(C样式?)函数的签名(参数计数/类型,返回类型)? 我可以使用DLL导出查看器查看函数名称,地址,序数等列表,但我无法查看签名。 我只有dll文件,既没有.h也没有.def文件。 更新:使用名为API Monitor的工具,我可以附加到使用上述dll的进程并查看对函数的调用。 这让我可以看到参数的数量,返回值及其整数值(指针?),但这并没有多大帮助。 我可能应该找到一种方法来确定这些指针在调用时指向的结构类型。

printf(“%p”)并转换为(void *)

在最近的一个问题中,有人提到当使用printf打印指针值时,调用者必须将指针强制转换为void *,如下所示: int *my_ptr = …. printf(“My pointer is: %p”, (void *)my_ptr); 对于我的生活,我无法弄清楚为什么。 我发现了这个问题 ,几乎是一样的。 问题的答案是正确的 – 它解释了整数和指针的长度不一定相同。 当然,这是正确的,但是当我已经有一个指针时,就像上面的情况一样,我为什么要从int *为void * ? 什么时候int *与void *不同? 事实上,什么时候(void *)my_ptr生成的任何机器代码都与my_ptr不同? 更新:多个知识渊博的响应者引用了标准,说传递错误的类型可能会导致未定义的行为。 怎么样? 我希望printf(“%p”, (int *)ptr)和printf(“%p”, (void *)ptr)生成完全相同的堆栈帧。 两个调用何时生成不同的堆栈帧?

如何使用scanfvalidation输入

如何使用scanfvalidation用户输入。 现在我有这样的东西,但不起作用。 注意:我有atoi只是为了validationscanfvalidation是否有效。 scanf(“%[0987654321.-]s”,buf); i = atoi(buf); if(i) index = i;

C程序查找给定日期的星期几

有没有办法在一行C代码中查找给定日期的星期几? 例如 考虑到19-05-2011(dd-mm-yyyy)给我星期四

没有定义类型的函数参数默认为int? 我疯了吗?

由于一些奇怪的原因,我正在复制另一种不使用类型的语言的例子,并且忘了在函数定义参数中添加一个,并且它有效。 #include char toChar(n) { //sizeof n is 4 on my 32 bit system const char *alpha = “0123456789ABCDEF”; return alpha[n]; } int main() { putchar(toChar(15)); //ie return 0; } 我确信某些标准的大多数编译器的main默认为int(但只返回),对于其他函数,这也是一种行为,或者这个实现是否定义了? 这似乎与众不同,我的编译器只是一个稍微过时的GCC端口(MinGW)。

用scanf读取逗号分隔的输入

我有以下输入: AG23,VU,Blablublablu,8 IE22,VU,FooBlaFooBlaFoo,3 and so on… 我希望它使用像这样的代码“解析”scanf: char sem[5]; char type[5]; char title[80]; int value; while(scanf(“%s,%s,%s,%d”, sem, type, title, &value) == 4) { //do something with the read line values } 但代码的执行给了我: illegale instruction你怎么读这样的逗号分隔文件?

需要知道何时使用strtok()在两个令牌分隔符之间没有数据出现

我试图标记一个字符串但我需要确切知道两个令牌之间何时没有数据。 例如,当标记下面的字符串“ a,b,c,,,d,e ”时,我需要知道’ d ‘和’ e ‘之间的两个空槽…我无法简单地使用strtok()找到它strtok() 。 我的尝试如下所示: char arr_fields[num_of_fields]; char delim[]=”,\n”; char *tok; tok=strtok(line,delim);//line contains the data for(i=0;i<num_of_fields;i++,tok=strtok(NULL,delim)) { if(tok) sprintf(arr_fields[i], "%s", tok); else sprintf(arr_fields[i], "%s", "-"); } 用上述例子执行上述代码将字符a,b,c,d,e放入arr_fields前五个元素中,这是不希望的。 我需要每个字符的位置进入数组的特定索引:即如果两个字符之间缺少一个字符,则应按原样记录。

如何在C中生成随机浮点数

我找不到从[0,a]找到随机浮点数的解决方案,其中a是用户定义的浮点数。 我尝试了以下,但它似乎无法正常工作。 float x=(float)rand()/((float)RAND_MAX/a)

通过指针从C和C ++中的函数返回本地数据

我跟朋友争吵了。 他说我可以从函数返回指向本地数据的指针。 这不是我所学到的,但我找不到反对他来certificate我的知识的反驳。 这是一个例子: char *name() { char n[10] = “bodacydo!”; return n; } 它用作: int main() { char *n = name(); printf(“%s\n”, n); } 他说这是完全可以的,因为在一个程序调用name后,它会返回一个指向n的指针,然后就会打印它。 同时程序中没有其他任何事情发生,因为它是单线程的,执行是串行的。 我找不到反驳的论点。 我永远不会写那样的代码,但他很顽固,并说这完全没问题。 如果我是他的老板,我会解雇他是一个顽固的白痴,但我找不到反驳的论点。 另一个例子: int *number() { int n = 5; return &n; } int main() { int *a = number(); int b = 9; int c = […]

Microsoft Visual Studio 2010是否支持c99?

我想知道Microsoft Visual Studio 2010是否支持C99。 如果没有,我如何使用intptr_t和uintptr_t等标准类型?