小编gca*_*dal的帖子

生成函数调用图Doxygen + Graphviz

如何使用安装了Graphviz的Doxywizard生成函数调用图?(我知道如何让doxygen为c函数生成调用和调用者图,但它没有帮助)

目前,我已经尝试了以下配置:http://pastebin.com/PjLjwjxU,但我无法在任何地方找到图表(我从未使用过该工具,所以它可能不是技术问题,但更多的是用户问题).

c doxygen graphviz doxywizard call-graph

6
推荐指数
1
解决办法
6681
查看次数

prof和gprof有什么区别?

就像标题所说,我想知道两个命令和它们产生的结果之间的区别.

从阅读本文我明白gprof需要一个额外的标志(-g,gdb需要相同的吗?),但这并没有给我一个关于分析器之间差异的答案.

c profiling

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

无法找到operator <for指针类型

我正在尝试使用带有重载<运算符的插入排序来命令指针向量(不能使用任何库).有一个包含另一个类的类,如:

class A {   
 vector<B*> v;
 void order();
}

class B {
int id;                         //each one is unique
virtual double num() {} const;
bool operator<(const B* b2) const;
}

class B1: public B {
double num() {} const;
}

class B2: public B {
double num() {} const;
}
Run Code Online (Sandbox Code Playgroud)

每个孩子都有不同的计算num的方法,并且使用num返回的double作为第一个标准,然后是id来完成排序.(对不起缩进)

void A::order() {

for (unsigned int p = 1; p < v.size(); p++)    
{
    ClassB* tmp = v[p];
    int j;
    for (j = p; j > 0 && tmp < …
Run Code Online (Sandbox Code Playgroud)

c++

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

按位切换最重要和最不重要的字节

假设我有一个存储2个字节的缓冲区:

char *buf=new char[4];
// 00000010 00000000 (.. other stuff ..)
Run Code Online (Sandbox Code Playgroud)

我想要做的是用最重要的字节切换最少的字节,并将该值存储在变量中.试着按如下方式这样做:

short len=buf[1];
len <<= 8;
len |= buf[0];
    // Result, as expected: 00000000 00000010
Run Code Online (Sandbox Code Playgroud)

它可以处理罚款,除非最重要的字节(buf [0])> = 128,这使得或运算符(|)用1填充短的一半.例:

Original: 10000110 00000000
Should be: 00000000 10000110
But is: 11111111 10000110
Run Code Online (Sandbox Code Playgroud)

谢谢(哦,我正在用file.read(...,4)从文件中读取字节; - 如果这是相关的话,甚至不知道了)

c c++ bit-manipulation

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

为什么cout不打印extern"C"变量?

请考虑以下代码:

extern "C" {
    #include <lib.h>
}

#include <iostream>

int main() {

    unsigned char a='a';
    unsigned char b=some_struct_in_libh->unsignedchar;

    cout << a << " " << b << endl; //Prints only a

    printf("%u\n",b); //Prints b

    cout << static_cast<int>(b) << endl; //Also prints b

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么它会像这样?

c c++ solaris extern sunstudio

0
推荐指数
1
解决办法
276
查看次数

在每个文件的子字符串上运行命令

假设我有一些文件:

samplea.txt
sampleb.txt
samplec.txt
Run Code Online (Sandbox Code Playgroud)

我想用这个表单运行一些命令:

./cmd -foo a.xml -bar samplea.txt
Run Code Online (Sandbox Code Playgroud)

首先,我试过

for file in "./*.txt"
do
    echo -e $file
done
Run Code Online (Sandbox Code Playgroud)

但是这样它会以直线打印每个文件.通过尝试:

echo -e $file\n
Run Code Online (Sandbox Code Playgroud)

它不会产生预期的(每个文件的单行).甚至无法通过问题的第一部分,即在每个文件上运行命令(可以通过find(...)-exec实现),但我真正想做的是提取子串每个名字.

这样做:

echo ${file:1}
Run Code Online (Sandbox Code Playgroud)

因为我只能在分割文件名后才能这样做,从每个文件名中获取"a","b","c".

如果这听起来令人困惑,我很抱歉,但这是我的第一个bash脚本.

bash

0
推荐指数
1
解决办法
49
查看次数