小编Cho*_*ong的帖子

如何在c ++头文件上使用gdb?

我试图在网上搜索这个问题,但似乎我无法找到解决问题的好方法.好吧,我正在尝试使用gdb来调试我的c ++程序.该程序由一个简单的main.cpp和一个model.h组成.编译命令是

g++ -Wall -g -c main.cpp
g++ -Wall -g main.o -o OUTPUT
Run Code Online (Sandbox Code Playgroud)

由于几乎所有算法都存储在model.h中,我需要调试该头文件而不是cpp文件.但是,每当我试图在标题上放置一个断点时

tbreak model.h:163
Run Code Online (Sandbox Code Playgroud)

gdb总是给我一条消息"没有名为TNFmodel.h的源文件".

GDB的另一个问题断点中,我看到了一个解决方案,即通过"dir"将包含标题的文件夹添加到库中.但我的头文件已经在源文件夹中,并在尝试后

dir ./
Run Code Online (Sandbox Code Playgroud)

问题依然存在.

所以谁知道什么是错的?如何使用gdb调试头文件?

c++ debugging gdb header

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

MesonBuild:如何定义`pkg-config`找不到的库的依赖?

我的项目(在C中)在构建时具有第三方依赖.但是,默认情况下,第三方库是安装的,/opt/而不是/lib,我找不到它pkg-config.从mesonbuild我的文档中,我应该使用declare_dependency,我没有其源代码将其视为我的子项目.如果我用dependency()它来定义它,我找不到正确的参数来定义自定义位置.

如何声明非标准第三方库的依赖关系?

c dependencies meson-build

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

如何在vim-latex中自定义模板

我正在尝试使用vim-latex,因为现有的模板非常简单且令人不满意,我正在尝试构建自己的一些模板.但是,在编写了我自己的模板并存储在"/ ftplugin/latex-suite/templates"之后,没有任何反应.该软件根本不会扫描新模板.我错过了一些让它起作用的步骤吗?

vim customization templates latex fedora

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

Python 2.7 pickle无法识别numpy多阵列

我需要从协作者加载一组pickle数据.问题是,我似乎需要多阵列.我的代码如下:

f = open('data.p', 'rb')
a = pickle.load(f)
Run Code Online (Sandbox Code Playgroud)

这是错误信息.

ImportError                               Traceback (most recent call last)
<ipython-input-3-17918c47ae2d> in <module>()
----> 1 a = pk.load(f)

/usr/lib/python2.7/pickle.pyc in load(file)
   1382 
   1383 def load(file):
-> 1384     return Unpickler(file).load()
   1385 
   1386 def loads(str):

/usr/lib/python2.7/pickle.pyc in load(self)
    862             while 1:
    863                 key = read(1)
--> 864                 dispatch[key](self)
    865         except _Stop, stopinst:
    866             return stopinst.value

/usr/lib/python2.7/pickle.pyc in load_global(self)
   1094         module = self.readline()[:-1]
   1095         name = self.readline()[:-1]
-> 1096         klass = self.find_class(module, name)
   1097         self.append(klass)
   1098     dispatch[GLOBAL] = …
Run Code Online (Sandbox Code Playgroud)

numpy pickle python-2.7

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

如何将一个类的方法传递给 C++ 中的另一个函数?

假设我有一个类和一个函数

class A
{
    int a;
    int b;
    int mul()
    {
        return a+b;
    }
};
...

void func(int af, int bf, int (*fc)())
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

在main函数中,函数应该使用A类的方法

int main
{
    A as;
    ...
    func(as.a, as.b, as.mul);
}
Run Code Online (Sandbox Code Playgroud)

但是,我不能那样做,编译器一直告诉我我通过了

(int&, int&, 'unresolved overloaded function type') 
Run Code Online (Sandbox Code Playgroud)

进入候选函数

(int, int, void(*)()).
Run Code Online (Sandbox Code Playgroud)

为什么会这样,以及如何将类的方法传递给另一个函数?

哦,我想我应该把问题说清楚一点。func(...)实际上是我正在研究的算法中的一个函数。并且class A是一个模型,将使用该算法进行模拟。所以我不认为我会在函数 B 中专门使用 A 的实例,而只是将 A 的方法和组件传入并使用它们。


更新:有些人提到在 A 类中使用静态方法。但是,这仍然是部分解决方案。使用静态方法mul()将迫使我声明 a 和 b 都是静态的。如果我必须使用 A 的多个实例,在我的主函数中的每个实例中使用不同的方法 a、b,那么使用静态变量只会失败。

那么,在不使用静态变量/方法的情况下如何解决这个问题还有其他建议吗?我记得在 python 等脚本语言中,传递任何类型的方法基本上都不是问题。为什么我不能在 C++ 中做类似的事情?或者 C++ 中是否有解决方法可以帮助我做到这一点?

c++ methods class function

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

如何在Vim中使用预写命令

有时一遍又一遍地重写类似的命令很无聊,所以我想预先编写所有这些命令,将它们保存到一个自定义命令中并一劳永逸地使用它.但是,由于我将使用的新命令仅用于我当前使用的文件,我真的不想打扰更改vimrc文件.所以这是我的问题,是否可以将命令预先写入文件并将其加载到vim然后使用它一次?如果可能,该怎么办?

谢谢.

vim customization command

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