小编ano*_*non的帖子

将参数传递给"make run"

我使用Makefiles.

我有一个目标run,它运行构建目标.简化后,它看起来如下:

prog: ....
  ...

run: prog
  ./prog
Run Code Online (Sandbox Code Playgroud)

坐下来.我知道这是巧妙的,但不需要起立鼓掌.

现在,我的问题是 - 有没有办法传递参数?以便

make run asdf --> ./prog asdf
make run the dog kicked the cat --> ./prog the dog kicked the cat
Run Code Online (Sandbox Code Playgroud)

谢谢!

makefile

328
推荐指数
10
解决办法
19万
查看次数

检查当前目录是否是Git存储库

我正在为zsh中的Git管理编写一系列脚本.

如何检查当前目录是否是Git存储库?(当我不在Git仓库中时,我不想执行一堆命令并得到一堆fatal: Not a git repository响应).

git zsh

168
推荐指数
9
解决办法
8万
查看次数

像时尚一样在树中输出git branch

现在,当我键入"git branch"

它以任意顺序列出我的分支.

我更喜欢的是,如果"git branch"将我的输出列在像fasion这样的树中,有些像:

master
|-- foo
  |-- foo1
  |-- foo2
|-- bar
  |-- bar4
Run Code Online (Sandbox Code Playgroud)

在这里,foo&bar是从主人那里分出来的; foo1和foo2从foo分支出来; bar4从bar分支.

这很容易实现吗?

[仅限命令行实用程序.这需要适合我的zsh/vim工作流程.]

git

136
推荐指数
5
解决办法
11万
查看次数

std :: map默认值

当密钥不存在时,有没有办法指定默认值std::mapoperator[]返回值?

c++ stdmap

76
推荐指数
8
解决办法
7万
查看次数

如何使此C++对象不可复制?

见标题.

我有:

class Foo {
   private:
     Foo();
   public:
     static Foo* create();
}
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能让Foo无法复制?

谢谢!

c++ copy-constructor noncopyable

64
推荐指数
8
解决办法
5万
查看次数

在C++中,是否可以将类声明为从另一个类继承?

我知道我能做到:

class Foo;
Run Code Online (Sandbox Code Playgroud)

但是我可以将一个类声明为继承自另一个类,例如:

class Bar {};

class Foo: public Bar;
Run Code Online (Sandbox Code Playgroud)

示例用例是共变量引用返回类型.

// somewhere.h
class RA {}
class RB : public RA {}
Run Code Online (Sandbox Code Playgroud)

...然后在另一个不包含somewhere.h的标题中

// other.h
class RA;

class A {
 public:
  virtual RA* Foo();  // this only needs the forward deceleration
}

class RB : public RA; // invalid but...

class B {
 public:
  virtual RB* Foo();  // 
}
Run Code Online (Sandbox Code Playgroud)

唯一的信息编译器应该需要处理的声明,RB* B:Foo()RB具有RA作为公共基类.现在显然你需要somewhere.h如果你打算从中做任何类型的反引用返回值Foo.但是,如果某些客户端从不调用Foo,那么它们没有理由包含somewhere.h,这可能会显着加快编译速度.

c++ inheritance forward-declaration

63
推荐指数
3
解决办法
3万
查看次数

VIM Scripting的好指南?

我已经使用了VIM 10年以上,但从未真正使用过VIM脚本(总是主观地认为这是VIM弱于Emacs的一个领域).

最近,实现"在VIM脚本中,我可以执行正常模式命令"让我的思绪变成了"a-ha",突然开始意识到为什么VIM脚本的部分就是这样.

normal ma10jd'a20kp
Run Code Online (Sandbox Code Playgroud)

比它更优雅

Marker m = currentLocation();
advanceLines(10);
Buffer b = delete(currentLocation(), m);
advanceLines(-20);
insertBuffer(b);
Run Code Online (Sandbox Code Playgroud)

现在的问题是 - 学习vim脚本的好资源是什么?

谢谢!

vim scripting

54
推荐指数
4
解决办法
2万
查看次数

如何强制实例化C++模板的特定实例?

见标题.我有一个模板.我想强制模板的特定实例进行实例化.我该怎么做呢?

更具体地说,您可以强制抽象模板类进行实例化吗?


我可能会详细说明,因为我有同样的问题.在我的情况下,我正在构建一个库,一些模板实现很大,包含很多东西,但只生成几种类型.我想在库中编译它们并导出所有方法,但不包括带代码的头文件.

即:

template<class T>
OS_EXPORT_DECL class MyTmpl
{
    T *item1;
public:
    inline T *simpleGetT() { return(item1); } /* small inline code in here */ } 
    T *doSomeReallyBigMergeStuff(T *b); // note only declaration here
};

// *** implementation source file only seen inside library

template<class T>
MyTmpl<T>::doSomeReallyBigMergeStuff(T *b)
{
    ... a really big method, but don't want to duplicate it, 
        so it is a template ...
}
Run Code Online (Sandbox Code Playgroud)

我当然可以引用库中的所有方法来强制它们进行编译和导出,但是不希望向库添加不需要的代码,比如项的参数格式和调用它们的代码等.

????? 具体来说,我正在为多个版本的MSC和GCC以及英特尔编译器构建库.

c++ templates instantiation

49
推荐指数
2
解决办法
3万
查看次数

如何在Linux上配置多线程C++应用程序?

我曾经用gprof做我所有的Linux分析.

但是,对于我的多线程应用程序,它的输出似乎不一致.

现在,我挖了这个:

http://sam.zoy.org/writings/programming/gprof.html

但是,从很久以前开始,在我的gprof输出中,看来我的gprof列出了非主线程使用的函数.

所以,我的问题是:

1)2010年,我可以轻松使用gprof来分析多线程Linux C++应用程序吗?(Ubuntu 9.10)2)我应该研究哪些其他工具进行性能分析?

c++ multithreading gprof

46
推荐指数
6
解决办法
5万
查看次数

Linux C++:如何分析由于缓存未命中而浪费的时间?

我知道我可以使用gprof来对我的代码进行基准测试.

但是,我有这个问题 - 我有一个智能指针,具有额外的间接级别(将其视为代理对象).

因此,我有这个额外的层,几乎影响所有功能,并带有缓存的螺丝.

有没有办法测量我的CPU因缓存未命中而浪费的时间?

谢谢!

c++ linux profiling caching

44
推荐指数
6
解决办法
3万
查看次数