小编Sim*_*mon的帖子

C++'typedef'与'using ... = ...'

可能重复:
typedef和在C++ 11中使用有什么区别?

以下代码编译并运行.我的问题是"typedef"和"using"方法之间用于重命名模板特化的区别是什么?

template<typename T>
struct myTempl{
    T val;
};

int main (int, char const *[])
{
    using templ_i = myTempl<int>;
    templ_i i;
    i.val=4;

    typedef myTempl<float> templ_f;
    templ_f f;
    f.val=5.3;

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

编辑:

如果没有差异,你更喜欢哪一个?/为什么引入使用... = ...版本?

c++ typedef using-directives c++11

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

负反向的grep反斜杠

我想XXX在我的乳胶文档中找到不是命令形式的出现次数\XXX.因此,我正在寻找没有反斜杠的事件.

我尝试了以下方法:

grep -c -e '(?<!\)XXX' test.tex    #result: grep: Unmatched ) or \)
grep -c -e '(?<!\\)XXX' test.tex   #result: 0
grep -c -e "(?<!\\)XXX" test.tex   #result: -bash: !\\: event not found
Run Code Online (Sandbox Code Playgroud)

它们都没有按预期工作.实际上我完全不理解上一条错误消息.

我的test.tex只包含以下几行

%test.tex

XXX

\XXX
Run Code Online (Sandbox Code Playgroud)

所以预期的结果是1.

有任何想法吗?

Ps.:我在bash工作.

regex bash grep

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

(Python C API)PyRun_StringFlags缺少内置函数?

我想在我的宠物项目中嵌入一些python.我已将问题减少到以下代码:

#include <Python.h>
#include "iostream"

int main(int argc, char *argv[])
{
    Py_Initialize();

    PyObject *globals = Py_BuildValue("{}");
    PyObject *locals = Py_BuildValue("{}");

    PyObject *string_result = PyRun_StringFlags(
        "a=5\n"
        "s='hello'\n"
        "d=dict()\n"
        ,
        Py_file_input, globals, locals, NULL);
    if ( PyErr_Occurred() ) {PyErr_Print();PyErr_Clear();return 1;}
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

(我知道我没有清理任何参考文献.这是一个例子.)

它可以编译

c++ $(python-config --includes) $(python-config --libs) test.cpp -o test
Run Code Online (Sandbox Code Playgroud)

如果我运行它,我会收到以下错误:

$ ./test 
Traceback (most recent call last):
  File "<string>", line 3, in <module>
NameError: name 'dict' is not defined
Run Code Online (Sandbox Code Playgroud)

看来内置函数没有加载.我也import什么都没有.我明白了__import__.如何加载丢失的模块或我遗漏的任何内容?

谢谢.

python python-embedding python-c-api

10
推荐指数
2
解决办法
1529
查看次数

偏移的nm符号值?

只是为了给你一些上下文,这是我想要实现的:我在一个共享对象文件中嵌入一个const char*,以便在.so文件本身中有一个版本字符串.我正在进行数据分析,这个字符串使我能够让数据知道产生它的软件版本.一切正常.

我遇到的问题是当我尝试直接读取.so库中的字符串时.我试着用

nm libSMPselection.so | grep _version_info
Run Code Online (Sandbox Code Playgroud)

得到

000000000003d968 D __SMPselection_version_info
Run Code Online (Sandbox Code Playgroud)

这一切都很好并且符合预期(char*被称为_SMPselection_version_info).但是我本来希望现在能够打开文件,寻找0x3d968并开始读取我的字符串,但我得到的只是垃圾.

当我打开.so文件并只是搜索字符串的内容(我知道它是如何开始)时,我可以在地址0x2e0b4找到它.在这个地址它就在那里,零终止并按预期.(我现在正在使用这种方法.)

我不是计算机科学家.有人可以向我解释为什么nm所示的符号值不正确,或者不同的是,如果它不是符号的地址,那么符号值是多少?

(顺便说一句,我在使用OSX 10.7的Mac上工作)

c++ unix macos linker nm

7
推荐指数
2
解决办法
2783
查看次数

请帮我理解带参数的C++参数声明

我每天都使用ROOT C++库(root.cern.ch),并在遇到此函数声明时浏览源代码:

TString TString::Format(const char *va_(fmt), ...)
{
    //etc.
Run Code Online (Sandbox Code Playgroud)

它可以在这里找到.

我不明白如何const char *在名称中有一个参数或括号.该表达式va_(fmt)稍后用作简单表达,const char *即使它看起来像函数调用或构造函数.起初我以为它与变量参数列表有关,这对我来说也是新的,但阅读stdarg.h上的文档根本没有帮助解决这个问题.

谷歌寻求帮助非常困难,因为我不确定该怎么称呼它.带参数的声明?这没有给出任何好结果.

我曾经认为我认识C++,但这里发生了什么?所有帮助将不胜感激.

c++ syntax arguments function-declaration

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

在 GNU 屏幕中,是否可以通过编程方式读取状态消息?

我正在考虑编写一个图形工具,它将向您显示您拥有哪些 gnu-screen 会话以及其中有哪些可用窗口。例如,您可以单击窗口标题,它会将您带到那里。我不想以任何方式修改 gnu-screen ,以便我的工具可以与其他机器上的现有安装一起使用等等。

我可以通过使用日志文件或将最后几行复制到交换缓冲区中,从屏幕会话中的屏幕内运行的程序中获取普通输出。为了制作一个漂亮的用户界面,我真正需要的是状态行(临时出现在窗口底部的行)的内容。例如,要获取会话中的窗口列表,我可以发送命令windowlist,但结果永远不会成为输出的一部分。有谁知道是否有一种方法可以让屏幕将其消息放入日志、粘贴缓冲区、当前窗口或任何类似的地方,我可以从另一个程序中获取它?

gnu-screen

5
推荐指数
0
解决办法
357
查看次数

c ++ 11统一初始化不适用于clang ++

我从这个维基百科页面复制了以下示例:

struct BasicStruct {
    int x;
    double y;
};

struct AltStruct {
    AltStruct(int x, double y) : x_{x}, y_{y} {}

private:
    int x_;
    double y_;
};

BasicStruct var1{5, 3.2};
AltStruct var2{2, 4.3};

int main (int argc, char const *argv[])
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试用它编译它

clang++ -Wall -std=c++11 test.cpp 
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

test.cpp:17:11: error: non-aggregate type 'AltStruct' cannot be initialized with
      an initializer list
AltStruct var2{2, 4.3};
          ^   ~~~~~~~~
1 error generated.
Run Code Online (Sandbox Code Playgroud)

我的铿锵版clang++ --version

Apple clang version 3.1 (tags/Apple/clang-318.0.61) …
Run Code Online (Sandbox Code Playgroud)

c++ clang c++11

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