有人可以解释这段代码中的这些行吗?

Can somebody explain these lines in this code?

我在 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语句。

失败时使用 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指定) . 0x%08x中的%08用于设置宽度为8。参见 printf doc

printf("%s is located at 0x%08x in %s\n",argv[2],(unsigned int)fprc_func,argv[1]);

第一个%s指的是argv[2].

%08x 是指带 8 个零的十六进制形式的 fprc_func,其中 fprc_func 是由 GetProcAddress 返回的函数指针。 (unsigned int) 将地址转换为无符号整数(从不为负)。

最后的%s指的是argv[1].

有关 printf 格式的更多信息可在此处找到: http://www.cplusplus.com/reference/cstdio/printf/