我使用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)
谢谢!
我正在为zsh中的Git管理编写一系列脚本.
如何检查当前目录是否是Git存储库?(当我不在Git仓库中时,我不想执行一堆命令并得到一堆fatal: Not a git repository响应).
现在,当我键入"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工作流程.]
见标题.
我有:
class Foo {
private:
Foo();
public:
static Foo* create();
}
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能让Foo无法复制?
谢谢!
我知道我能做到:
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,这可能会显着加快编译速度.
我已经使用了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脚本的好资源是什么?
谢谢!
见标题.我有一个模板.我想强制模板的特定实例进行实例化.我该怎么做呢?
更具体地说,您可以强制抽象模板类进行实例化吗?
我可能会详细说明,因为我有同样的问题.在我的情况下,我正在构建一个库,一些模板实现很大,包含很多东西,但只生成几种类型.我想在库中编译它们并导出所有方法,但不包括带代码的头文件.
即:
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以及英特尔编译器构建库.
我曾经用gprof做我所有的Linux分析.
但是,对于我的多线程应用程序,它的输出似乎不一致.
现在,我挖了这个:
http://sam.zoy.org/writings/programming/gprof.html
但是,从很久以前开始,在我的gprof输出中,看来我的gprof列出了非主线程使用的函数.
所以,我的问题是:
1)2010年,我可以轻松使用gprof来分析多线程Linux C++应用程序吗?(Ubuntu 9.10)2)我应该研究哪些其他工具进行性能分析?
我知道我可以使用gprof来对我的代码进行基准测试.
但是,我有这个问题 - 我有一个智能指针,具有额外的间接级别(将其视为代理对象).
因此,我有这个额外的层,几乎影响所有功能,并带有缓存的螺丝.
有没有办法测量我的CPU因缓存未命中而浪费的时间?
谢谢!