未直接包含<mutex>却使用std::mutex?OpenRAVE编译疑问
关于OpenRAVE production分支编译中std::mutex隐式可用的解答
- 这是间接头文件包含导致的:你查看的
sensorsystem.h虽然没有直接写入#include <mutex>,但它所包含的其他头文件(比如OpenRAVE的核心基础头、或是其他依赖的标准库头)已经提前引入了<mutex>,因此编译器能够识别std::mutex的定义。 - 针对
sensorsystem.h的具体情况,可以检查文件开头的#include语句,比如它大概率包含了openrave/openrave.h这类核心头文件,而这些核心头内部已经通过自身的依赖链引入了<mutex>。 - 额外提醒:这种隐式依赖的写法并不规范——如果后续某个依赖头文件修改后不再包含
<mutex>,当前代码会直接出现编译错误。正确的编码实践是在直接使用std::mutex的头文件中显式添加#include <mutex>。
内容的提问来源于stack exchange,提问作者Pinknoise
相关产品推荐
相关产品推荐

