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

注意:

  1. Sleep是区分大小写的,有的编译器是大写,有的是小写。
  2. 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。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部