【问题标题】:Unable to use rosrun because of unknown syntax error由于未知语法错误,无法使用 rosrun
【发布时间】: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


【解决方案1】:

我是个白痴:我认为它无法工作的原因是我正在运行源文件而不是实际编译的程序。

解决方案:

rosrun myrobot key

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    相关资源
    最近更新 更多