小编can*_*tan的帖子

将.s文件与CMake链接

我有一个我想使用的ac函数,但是用Intel编译器而不是gnu C编译器编译.我正在使用cmake构建程序.(我实际上正在使用ROS,因此rosmake基础是cmake这样我认为它更像是一个问题,而不是一个ROS问题).假设使用的文件iccx.c并生成一个x.s文件.我想使用的功能a()来自x.c于我的文件y.cpp.在y.cpp我有:

#include "x.h" 
..... 
call a() 
Run Code Online (Sandbox Code Playgroud)

这工作,如果CMakeLists.txt

rosbuild_add_executable(y y.cpp x.c)

rosbuild_add_executable is analogous to add_executable(...) 
Run Code Online (Sandbox Code Playgroud)

但如果我建立x.cicc和尝试包括x.s文件,而不是:

rosbuild_add_executable(y y.cpp x.s) 
Run Code Online (Sandbox Code Playgroud)

它不起作用.有一些变化,我应该做出我打电话的方式a()y.cpp?或者是否有其他方式来链接它.

gcc cmake icc ros

4
推荐指数
1
解决办法
4289
查看次数

如何像普通指针一样增加shared_ptr

我正在尝试使用c ++智能指针反向打印一个char数组.我遇到两个问题.1是我正在尝试调试的运行时错误,另一个是每次我必须增加shared_ptr的事实我必须使用get()方法.

我正在粘贴我的两个功能.一个只使用指针反转字符串的人.和一个使用共享ptr.

    int display_string_reversep(char* astring)
{ 
  char* achar = astring;
  if((*achar) != '\0')
    {
      char* x= achar;
      x++;
      display_string_reversep(x);
      cout<<(*achar);
    }
    return 0;
} 
int display_string_reverseup(shared_ptr<char> astring)
{ 
  shared_ptr<char> achar(astring);
  //if((*achar) != '\0')
  if(achar != nullptr)
    {
      if(*(achar.get()+1) != '\0')
    {
      shared_ptr<char> x(achar.get()+1);
      //x++;
      display_string_reverseup(x);
    }
      cout<<(achar);
    }
    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

我是c ++ 11的新手,这只是我自己完成的一个小练习.到目前为止,互联网没有让我增加共享指针的其他方法.在那儿 ?

char astring [] = {'F','e','l','l','o','w','\0'};

  display_string_reversep(astring);
  display_string_reverseup(shared_ptr<char>(astring));
Run Code Online (Sandbox Code Playgroud)

c++ recursion smart-pointers c++11

1
推荐指数
1
解决办法
3114
查看次数

标签 统计

c++ ×1

c++11 ×1

cmake ×1

gcc ×1

icc ×1

recursion ×1

ros ×1

smart-pointers ×1