PCL使用pcl_sleep函数出现错误提示:未定义标识符“sleep”问题详解
如图:

在使用pcl_sleep函数时出现错误提示。
解决方法:
① 查找是否包含头文件#include
② 打开pcl_macros.h头文件,寻找到 sleep,将其修改为Sleep;
头文件中的初始代码:
#ifdef WIN32
#define pcl_sleep(x) Sleep(1000*(x))
#else
#define pcl_sleep(x) sleep(x)
#endif
改成:
#ifdef WIN32
#define pcl_sleep(x) Sleep(1000*(x))
#else
#define pcl_sleep(x) Sleep(x)
#endif
其实并不是pcl中的源码出错了,上面的解决办法是简单粗暴的。
根据博文【C/C++】Sleep函数的用法:
Sleep函数
功能: 执行挂起一段时间,也就是等待一段时间在继续执行
用法:Sleep(时间)
头文件:
- Windows下为--> windows.h
- Linux 下为 --> unistd.h
注意:
- Sleep是区分大小写的,有的编译器是大写,有的是小写。
- Sleep括号里的时间,在windows下是以毫秒为单位,而Linux是以秒为单位
再回到pcl中的源码:
#ifdef WIN32
#define pcl_sleep(x) Sleep(1000*(x))
#else
#define pcl_sleep(x) sleep(x)
#endif
可以看见,当编译环境是32位时,使用的是大写的Sleep,并且传入的是毫秒,在其他环境中,则使用的是小写,传入的是时间是以秒为单位。
而我使用的开发环境为Win10+VS2017+Win64,被当成其他开发环境了,所以正确的改法应该是再添加一个判断条件:
#ifdef WIN32
#define pcl_sleep(x) Sleep(1000*(x))
#elif _WIN64
#define pcl_sleep(x) Sleep(1000*(x))
#else
#define pcl_sleep(x) sleep(x)
#endif
或者也可以将编译环境改成Win32。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
