【发布时间】:2021-10-27 16:14:08
【问题描述】:
我正在尝试运行:
rosrun myrobot keys.cpp
但我收到此错误:
/home/kannachan/drone/src/quantum_drone/scripts/Controls/Keys.cpp: line 6: syntax error near unexpected token `('
/home/kannachan/drone/src/quantum_drone/scripts/Controls/Keys.cpp: line 6: `int getch() {'
我检查了我在互联网上窃取的程序(获取键盘输入):
#include <termios.h>
#include <ros/ros.h>
#include "std_msgs/Int32.h"
int getch() {
static struct termios oldt, newt;
tcgetattr( STDIN_FILENO, &oldt);
newt = oldt;
newt.c_lflag &= ~(ICANON);
tcsetattr( STDIN_FILENO, TCSANOW, &newt);
int ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldt);
return ch;
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "keyboard");
ros::NodeHandle n;
ros::Publisher pub = n.advertise<std_msgs::Int32>("/key", 1000);
ros::Rate loop_rate(10);
while (ros::ok())
{
std_msgs::Int32 c;
c.data = getch();
pub.publish(c);
ros::spinOnce();
loop_rate.sleep();
}
}
我检查了第 6 行以查看语法错误,但根据我在 C++ 中的经验,似乎没有任何语法错误。该代码之前已被注释,但我删除了它,因为它也导致 rosrun 出现问题,现在我有以下错误,我只是不明白发生了什么。
【问题讨论】:
-
我猜
getch是一些包含文件中定义的宏 -
@S.M.我想我解决了这个问题。我试图运行源文件而不是编译的程序。我试过
rosrun myrobot key,现在似乎可以了。 -
请澄清您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
标签: c++ syntax-error ros