读书人

return 话语的疑惑

发布时间: 2012-09-03 09:48:39 作者: rapoo

return 语句的疑惑
小子看书时,看到如下代码,有点疑问想请教大牛们,

C/C++ code
void* GetProcAddress(void* handle,char *szFuncName){void *vret;char *szError;return dlsym(handle,szFuncName);szError = dlerror();if(szError){if(memcmp(szError,"no errors",9) == 0)return vret;else{HtLog(LOG_ERROR,"GetProcAddress() error:%s\n",szError);return NULL;}}return vret;}


不知上述代码中 return dlsym(handle,szFuncName); 后面的代码会不会执行?如果会的话麻烦给予解释,谢谢!!
还有这段代码最后返回值会是什么呢?

还望大牛们不吝赐教啊! 小子感激不尽。。。。

[解决办法]
不会。
[解决办法]
函数返回类型是 void *
这个东西是告诉编译器,返回一个指针,但是类型不必去检查

return dlsym(handle,szFuncName) 这个应该是正常流程的
返回的应该是个指针才对

后面的代码按说不会执行
但是目测应该是个防御性编程的容错代码

具体我也说不清楚
静等大牛解释了
[解决办法]
return 就返回了
[解决办法]
返回了 控制权就交给调用函数了
[解决办法]
不会

void* GetProcAddress(void* handle,char *szFuncName)
{
   return dlsym(handle,szFuncName)

handle代表一个动态库的指针,它有dlopen获得;
szFuncName表示该动态库的中某个C编译函数的名称。
dlsym(...)获取动态库中指定函数szFuncName的地址,因此这个函数名称为GetProcAddress
至于返回值是什么东东,需要看动态库中该szFuncName是如何定义,它可能是任意类型的全局变量地址,也可能某种的函数指针类型的函数地址。

[解决办法]
这个没什么好说的,肯定不会执行
[解决办法]
楼主啊,还是买本基础教材吧,这钱省不得。

读书人网 >C语言

热点推荐