return 话语的疑惑
return 语句的疑惑
小子看书时,看到如下代码,有点疑问想请教大牛们,
不知上述代码中 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/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是如何定义,它可能是任意类型的全局变量地址,也可能某种的函数指针类型的函数地址。
------解决方案--------------------
这个没什么好说的,肯定不会执行
------解决方案--------------------
楼主啊,还是买本基础教材吧,这钱省不得。