当前位置:   article > 正文

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

未定义的标识符sleep

如图:

 在使用pcl_sleep函数时出现错误提示。

解决方法:

① 查找是否包含头文件#include <pcl/pcl_macros.h>
② 打开pcl_macros.h头文件,寻找到 sleep,将其修改为Sleep;

 头文件中的初始代码:

  1. #ifdef WIN32
  2. #define pcl_sleep(x) Sleep(1000*(x))
  3. #else
  4. #define pcl_sleep(x) sleep(x)
  5. #endif

改成:

  1. #ifdef WIN32
  2. #define pcl_sleep(x) Sleep(1000*(x))
  3. #else
  4. #define pcl_sleep(x) Sleep(x)
  5. #endif

 其实并不是pcl中的源码出错了,上面的解决办法是简单粗暴的。

根据博文【C/C++】Sleep函数的用法

Sleep函数

功能: 执行挂起一段时间,也就是等待一段时间在继续执行

用法:Sleep(时间)

头文件:

  • Windows下为--> windows.h
  • Linux 下为 --> unistd.h

注意:

  1. Sleep是区分大小写的,有的编译器是大写,有的是小写。
  2. Sleep括号里的时间,在windows下是以毫秒为单位,而Linux是以秒为单位

再回到pcl中的源码:

  1. #ifdef WIN32
  2. #define pcl_sleep(x) Sleep(1000*(x))
  3. #else
  4. #define pcl_sleep(x) sleep(x)
  5. #endif

可以看见,当编译环境是32位时,使用的是大写的Sleep,并且传入的是毫秒,在其他环境中,则使用的是小写,传入的是时间是以秒为单位。

而我使用的开发环境为Win10+VS2017+Win64,被当成其他开发环境了,所以正确的改法应该是再添加一个判断条件:

  1. #ifdef WIN32
  2. #define pcl_sleep(x) Sleep(1000*(x))
  3. #elif _WIN64
  4. #define pcl_sleep(x) Sleep(1000*(x))
  5. #else
  6. #define pcl_sleep(x) sleep(x)
  7. #endif

或者也可以将编译环境改成Win32。


---------------------
作者:罗三泡泡
来源:CSDN
原文:https://blog.csdn.net/luolaihua2018/article/details/117412419
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/518429
推荐阅读
相关标签
  

闽ICP备14008679号