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

时间:2016-04-23 12:50:53

标签: c function exit explain

在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声明。

2 个答案:

答案 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_funcGetProcAddress返回的函数指针。 (unsigned int)将地址转换为无符号整数(从不为负数)。

最后%s指的是argv[1]

有关printf格式的更多信息,请访问: http://www.cplusplus.com/reference/cstdio/printf/