小编Did*_*set的帖子

如何在列X之间插入空格以排列列中的内容?

我的复制操作符的源代码编写如下.

foo = rhs.foo;
foobar = rhs.foobar;
bar = rhs.bar;
toto = rhs.toto;
Run Code Online (Sandbox Code Playgroud)

我想按照以下方式排列(更具人性化,不是吗?).

foo    = rhs.foo;
foobar = rhs.foobar;
bar    = rhs.bar;
toto   = rhs.toto;
Run Code Online (Sandbox Code Playgroud)

是否有一个VIM魔术插入到列N,或类似的东西,这将允许我使用每行几次击键排队?

vim

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

如何改进Visual C++编译时间?

我在每次提交时在buildbot中编译2个C++项目.两者都是大约1000个文件,一个是100 kloc,另一个是170 kloc.编译时间与gcc(4.4)到Visual C++(2008)有很大不同.

一个项目的Visual C++编译需要20分钟.他们无法利用多核,因为项目依赖于另一个.最后,在Debug和Release中对32和64位的两个项目进行完整的编译需要超过2 1/2小时.

一个项目的gcc汇编需要4分钟.它可以在4个核心上并行化,大约需要1分10秒.2个项目的4个版本(Debug/Release,32/64位)的所有8个版本都在不到10分钟的时间内编译完成.

Visual C++编译时发生了什么?它们基本上慢了5倍.

编译C++ kloc的平均时间是多少?我的是带有vc ++的7 s/kloc和带有gcc的1.4 s/kloc.

可以做任何事情来加快Visual C++上的编译时间吗?

c++ comparison gcc visual-c++ compilation-time

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

C程序员开始编写C++有什么坏习惯?

最近的一次讨论结束时嘲笑程序员的坏习惯,当他们开始用另一种语言编程时,他们过于暴露于某种语言.最好的例子是Pascal程序员开始#define begin {#define end }开始写C.

目标是在他们开始使用C++时尝试捕捉C程序员的坏习惯.

告诉你不要遇到的大事.请回答一个建议,试图实现一种最好的.

对于那些对良好习惯感兴趣的人,请看一下这个问题的接受答案.

c c++

34
推荐指数
15
解决办法
7889
查看次数

如何指定在链接时使用的库版本?

以下问题应用程序如何在运行时解析为不同版本的共享库?,我想知道如何在链接命令行上指定要使用哪个版本的库?

让我说我有

libmy.so.1.0
libmy.so.1    -> libmy.so.1.0
libmy.so.2.0
libmy.so.2    -> libmy.so.2.0
libmy.so      -> libmy.so.2
Run Code Online (Sandbox Code Playgroud)

指定要与可执行文件链接的库的常用方法不显示要使用的版本.此外,很可能想要与最新版本链接.因此,在大多数情况下,通常的线路工作正常

gcc app.o -lmy -o app
Run Code Online (Sandbox Code Playgroud)

app要使用库的版本1的链接命令行是什么?

linux gcc shared-libraries

28
推荐指数
1
解决办法
2万
查看次数

粘贴选定文本时,vim如何保留寄存器的内容?

我有一行文字,我已经猛拉了yy.现在我想用这个文本替换其他几个地方的行.麻烦的是,当我选择V要替换的行并粘贴时p,所选的文本会被自动拉出!这就是我不想要的.

更改寄存器不起作用,因为粘贴和抽取都是使用新选择的寄存器完成的.

粘贴选定文本时保留寄存器内容的命令是什么?

vim copy-paste

28
推荐指数
2
解决办法
5086
查看次数

Makefile如何为源代码和二进制文件使用单独的目录?

我希望能够将我的bin和我的代码文件拆分成单独的目录,因为它在当前状态下变得难以管理.

我理想的是希望拥有

project_dir
|-Makefile
|-run_tests.sh
|
|__source
|  |-program1.cpp
|  |-program2.cpp
|
|__bin
   |-program1
   |-program2
Run Code Online (Sandbox Code Playgroud)

但是我无法使用我当前的系统,而不必手动写出每个程序的规则(请记住,每个程序都是一个单独的程序,而不是一系列链接在一​​起的对象)

#Current make system
BIN=./bin/
SOURCE=./source/

LIST=program1 program2...

all: $(LIST)

%:  $(SOURCE)%.cpp
    $(CC) $(INC) $< $(CFLAGS) -o $(BIN)$@ $(LIBS)
Run Code Online (Sandbox Code Playgroud)

这工作除了它我无法在当前路径中看到目标,因此它认为它总是重建二进制文件,即使源文件没有更改.

我目前唯一想到的是编写一个程序来制作一个makefile,但我不想这样做.

makefile

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

在C上正确使用Stat

为什么这样做:

char *fd = "myfile.txt";
struct stat buf;          

stat(fd, &buf);
int size = buf.st_size;

printf("%d",size);
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

char *fd = "myfile.txt";
struct stat *buf;          

stat(fd, buf);
int size = buf->st_size;

printf("%d",size);
Run Code Online (Sandbox Code Playgroud)

c posix file

16
推荐指数
2
解决办法
6万
查看次数

如何在共享对象中包含存档的所有对象?

当编译我们的项目,我们创建几个档案(静态库),说liby.alibz.a每个包含定义函数的对象文件y_function()z_function().然后,这些存档被连接在一个共享对象中,比如说libyz.so,这是我们的主要可分发目标之一.

g++  -fPIC  -c -o y.o y.cpp
ar cr liby.a y.o
g++  -fPIC  -c -o z.o z.cpp
ar cr libz.a z.o
g++ -shared -L. -ly -lz -o libyz.so
Run Code Online (Sandbox Code Playgroud)

当使用该共享对象到示例程序,比方说x.c,链接失败,因为到功能的未定义的引用y_function()z_function().

g++ x.o -L. -lyz -o xyz
Run Code Online (Sandbox Code Playgroud)

但是,当我将最终可执行文件直接与归档(静态库)链接时,它可以工作.

g++ x.o -L. -ly -lz -o xyz
Run Code Online (Sandbox Code Playgroud)

我的猜测是,归档中包含的目标文件没有链接到共享库中,因为它们中没有使用它们.如何强制包容?

编辑:

可以使用--whole-archive ld选项强制包含.但如果导致编译错误:

g++ -shared '-Wl,--whole-archive' -L. -ly -lz -o libyz.so
/usr/lib/libc_nonshared.a(elf-init.oS): In function `__libc_csu_init':
(.text+0x1d): undefined …
Run Code Online (Sandbox Code Playgroud)

linux linker gcc archive

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

如何在编辑器中管道程序输出?

我有我的程序生成一些数据.它输出标准错误的一切.

现在,我想将输出重定向到新启动的文本编辑器,进入启动时显示的主要未命名编辑窗口.我尝试使用vim和gedit但没有成功.

myprogram | gedit
myprogram | gvim
Run Code Online (Sandbox Code Playgroud)

有人知道X11文本编辑器会支持这个吗?

linux editor pipe

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

是否有C++标准类将变量设置为范围出口处的值

在成员函数的范围内,我想暂时将成员变量设置为某个值.

然后,当此函数返回时,我想将此成员变量重置为给定的已知值.

为了防止异常和多次返回,我已经使用类似简单的RAII来完成它.它是在成员函数的范围内定义的.

void MyClass::MyMemberFunction() {
    struct SetBackToFalse {
        SetBackToFalse(bool* p): m_p(p) {}
        ~SetBackToFalse() {*m_p=false;}
    private:
        bool* m_p;
    };

    m_theVariableToChange = true;
    SetBackToFalse resetFalse( &m_theVariableToChange ); // Will reset the variable to false.

    // Function body that may throw.
}
Run Code Online (Sandbox Code Playgroud)

看起来很平常,我想知道是否有任何这样的模板类在C++标准库中这样做?

c++ return raii exception-safety

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