可能重复:
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)
如果没有差异,你更喜欢哪一个?/为什么引入使用... = ...版本?
我想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工作.
我想在我的宠物项目中嵌入一些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__.如何加载丢失的模块或我遗漏的任何内容?
谢谢.
只是为了给你一些上下文,这是我想要实现的:我在一个共享对象文件中嵌入一个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上工作)
我每天都使用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++,但这里发生了什么?所有帮助将不胜感激.
我正在考虑编写一个图形工具,它将向您显示您拥有哪些 gnu-screen 会话以及其中有哪些可用窗口。例如,您可以单击窗口标题,它会将您带到那里。我不想以任何方式修改 gnu-screen ,以便我的工具可以与其他机器上的现有安装一起使用等等。
我可以通过使用日志文件或将最后几行复制到交换缓冲区中,从屏幕会话中的屏幕内运行的程序中获取普通输出。为了制作一个漂亮的用户界面,我真正需要的是状态行(临时出现在窗口底部的行)的内容。例如,要获取会话中的窗口列表,我可以发送命令windowlist,但结果永远不会成为输出的一部分。有谁知道是否有一种方法可以让屏幕将其消息放入日志、粘贴缓冲区、当前窗口或任何类似的地方,我可以从另一个程序中获取它?
我从这个维基百科页面复制了以下示例:
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)