在Arwin的源代码中,我看到了:
fprc_func = GetProcAddress(hmod_libname,argv[2]);
if(fprc_func == NULL)
{
printf("Error: could find the function in the library!\n");
exit(-1);
}
printf("%s is located at 0x%08x in %s\n",argv[2],(unsigned int)fprc_func,argv[1]);
为什么我们在这里使用exit(-1)
而不使用exit(1)
?
另请以理解的方式解释printf
声明。
答案 0 :(得分:2)
是否使用exit(-1)或exit(1)进行失败是个人选择。
POSIX compliant code使用1或EXIT_FAILURE
进行失败
在
printf("%s is located at 0x%08x in %s\n",argv[2],(unsigned int)fprc_func,argv[1]);
两个字符串argv[2]
& argv[1]
(由%s
指定)和无符号十六进制整数fprc_func
(由0x%08x
指定)将被打印。 %08
中的0x%08x
用于将宽度设置为8。请参阅printf doc。
答案 1 :(得分:0)
printf("%s is located at 0x%08x in %s\n",argv[2],(unsigned int)fprc_func,argv[1]);
第一个%s
是指argv[2]
。
%08x
以十六进制表示fprc_func
,其中包含8个零,其中fprc_func
是GetProcAddress
返回的函数指针。 (unsigned int)
将地址转换为无符号整数(从不为负数)。
最后%s
指的是argv[1]
。
有关printf格式的更多信息,请访问: http://www.cplusplus.com/reference/cstdio/printf/