我有一个我想使用的ac函数,但是用Intel编译器而不是gnu C编译器编译.我正在使用cmake构建程序.(我实际上正在使用ROS,因此rosmake基础是cmake这样我认为它更像是一个问题,而不是一个ROS问题).假设使用的文件icc是x.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.c与icc和尝试包括x.s文件,而不是:
rosbuild_add_executable(y y.cpp x.s)
Run Code Online (Sandbox Code Playgroud)
它不起作用.有一些变化,我应该做出我打电话的方式a()中y.cpp?或者是否有其他方式来链接它.
我正在尝试使用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)