草庐IT

auto-start-shell

全部标签

c++ - 我如何编写一个 C++ 程序,它将通过从 shell 运行来编译自身?

我经常想在C++中尝试一些东西,而不必费心编写Makefile、创建项目或输入复杂的命令行。我想知道是否可以制作一个也是bash脚本的.cpp文件,以便它可以自行编译和运行。我还希望能够在脚本中指定命令行选项,以防存在诸如boost等依赖项。 最佳答案 为什么不制作一个同时也是编译自身的cpp文件的脚本,为什么不制作一个监视cpp文件(或它所在的目录)并在任何新更改时重新编译cpp文件的脚本?inotifywait就是为此而生的。虽然这不能完全满足您的问题要求,但它可以防止您的代码携带所有脚本包袱。示例:.cpp文件#include

c++ - 'for(auto &str : vec)' 内部 for 循环的目的是什么?

我是C++的新手,正在尝试学习vector的概念。我在网上看到这段代码。我的问题是,'for(auto&str:vec)'中的内部for循环的目的是什么?为什么作者要对第一个引用(&str)创建第二个引用(&c)?intmain(){vectorvec;for(stringword;cin>>word;vec.push_back(word)){}for(auto&str:vec){for(auto&c:str){c=toupper(c);}}for(inti=0;i!=vec.size();++i){if(i!=0&&i%8==0)cout 最佳答案

c++ - 带有 if 语句的 auto 函数不会返回值

我制作了一个模板和一个auto函数,用于比较2个值并返回最小值。这是我的代码:#includeusingnamespacestd;//Templatewithavaluereturningfunction:PrintSmallertemplateautoPrintSmaller(TNumOne,UNumTwo){if(NumOne>NumTwo){returnNumTwo;}else{returnNumOne;}}intmain(){intiA=345;floatfB=23.4243;cout但它无法编译,我在VS2015上遇到此错误:错误C3487“int”:所有返回表达式必须推导出

c++ - 我可以使用 auto 或 decltype 代替尾随返回类型吗?

我发现尾随返回类型很容易定义返回复杂类型的函数的返回值,例如:autoget_diag(int(&ar)[3][3])->int(&)[3]{//usingtrailingreturntypestaticintdiag[3]{ar[0][0],ar[1][1],ar[2][2]};returndiag;}auto&get_diag2(int(&ar)[3][3]){//adding&autobecauseotherwiseitconvertsthearraytopointerstaticintdiag[3]{ar[0][0],ar[1][1],ar[2][2]};returndiag;

C++——这里是否存在从 Fred* 到 auto_ptr<Fred> 的隐式转换?

我看到了下面的代码,#include#includeusingnamespacestd;classFred;//Forwarddeclarationtypedefauto_ptrFredPtr;classFred{public:staticFredPtrcreate(inti){returnnewFred(i);//Isthereanimplicitcastinghere?Ifnot,howcanwereturn//aFred*withreturnvalueasFredPtr?}private:Fred(inti=10):i_(i){}Fred(constFred&x):i_(x.i_

c++ - 我应该明确地零初始化 auto_ptr 吗?

我的一些同事更喜欢在构造函数初始化列表中将std::auto_ptr显式初始化为0,但它会被初始化为0在它的构造函数中没有任何显式初始化。那么有什么理由这样做吗?#includeclassA{A():SomePtr(0){}private:std::auto_ptrSomePtr;}; 最佳答案 不,std::auto_ptr的默认构造函数正是这样做的,因此没有必要显式地这样做。无论如何,这是风格问题,您应该保持一致。例如,您是否会在构造函数初始化列表中显式调用成员vector的默认构造函数?作为旁注,std::auto_ptr在即

c# - Shell命名空间扩展。 C#。 C++,MFC,AT-使用什么?

我们需要创建一个Shell命名空间扩展。我在2005年离开了Windows编程,那时我不得不创建简单的Shell扩展,但是构建了非常复杂的COM服务器(进程内和进程外)和桌面应用程序。我们使用了ATL和MFC库。时间已经过去,现在我需要回到VisualStudio/Windows编程。我希望能够忘记有关ATL,MFC和C++的所有知识,以及使用C#在deCLR中创建应用程序的知识。我记得要找到优秀的ATL/MFC开发人员真的很困难,而且大多数时候我不得不做全部工作。因此,我想现在,在.NET时代,要找到能够帮助我的ATL/MFC开发人员真的是不可能的。我刚刚在MSDN库中看到了这一点:

在不正确关闭的情况下,创建Shell脚本以重新启动Linux

我有RaspbianJessie8在RaspberryPi3中运行。有3个JavaScript服务自动由PM2启动。但是,如果覆盆子被错误地关闭,例如,如果卸下了能源电缆,则服务不会启动。它们仅在正确关闭覆盆子时才自动启动sudoreboot.我需要一个外壳脚本,该脚本检查覆盆子是否被错误关闭,如果是这样,请使用sudoreboot.我看见这里和这里如何创建简单的重启脚本和这里如何检查服务是否正在运行,但没有发现如何检查如何检查不正确的关闭。谁能告诉我如何?看答案您始终可以将服务启动到旧的启动-文件/etc/rc.local,它是shell脚本,称为启动中的最后一件事。确保其可执行文件。

c++ - 我可以创建一个 auto_ptr 数组吗?

我有一个基类,它被多个派生类继承。我想创建baseClass指针的自动指针数组。当我初始化那些自动指针时,我遇到了一些编译时错误,然后我尝试这样做std::auto_ptrpbase[3];std::auto_ptrb1(newderived1());std::auto_ptrb2(newderived2());std::suto_ptrb3(newderived3());pbase[0]=b1;pbase[1]=b2;pbase[2]=b3;它工作正常,我修复了内存泄漏问题,而我是一个窗口,我不使用valgrind,我使用boost框架来解决泄漏问题。对于编译错误:classA{pu

c++ - 我们是否应该始终对局部变量使用 auto&&

阅读此主题后auto&&,这是否意味着我们在声明局部变量以捕获函数的返回类型时应该始终使用auto&&而不是auto(以准确保留功能)?用例可以是例如auto&&result=func_returning_lvalue_or_lvalue_reference();或auto&&iterator=vector_.begin();或其他任何内容。换句话说,有很多auto&&的基本代码是正常的吗? 最佳答案 不。您不应该一直使用auto&&。特别是,如果您需要拷贝,则不应使用它。使用auto&&,您可能会获得一个拷贝(作为对临时对象的引用