草庐IT

References

全部标签

c++ - 编译器构造 : Handle references to unordered symbols

我有龙书,但它似乎没有处理那个话题......在大多数现代语言中,可以使用某些变量,即使它们在代码中的出现是无序的。示例classFoo{voidbar(){plonk=42;}intplonk;}在函数之后声明变量plonk并不重要。问题有没有什么最佳实践/有用的模式来实现这个?我想到了两种方法:在解析时为看不见的符号添加虚拟符号。当声明被解析时,这些虚拟符号会被它们的真实符号所取代。解析后,我们可以检查是否有剩余的虚拟对象,如果有则输出错误。解析时不要做任何符号的事情,而只创建AST。在通过AST解析步骤后,根据节点添加符号。例如一个类节点添加child的符号并在之后处理它们。例如

Retrieving Git references 问题 Jenkins选择分支

RetrievingGitreferences问题Jenkins选择分支用Jenkins构建时,选择分支出现RetrievingGitreferences错误,如下图所示:可能跟你安装的插件有关系,我当时就是因为装了GerritTrigger这个插件后导致无法选择分支。解决办法:1.先去Jenkins插件管理处卸载这个插件,这里卸载并不能卸载干净,还需去Jenkins安装目录下手动删除这个插件程序2.我当时的Jenkins安装目录默认在C盘,路径是C:\ProgramData\Jenkins.jenkins\plugins,找到GerritTrigger这个插件程序,然后删除掉。(删除之前需停

c++ - 什么是规范地用来提及引用合并的词

在C++中,有一种机制可以在某些模板上下文和函数指针中“合并”引用。void(*)()等同于void()。我一直在尝试用谷歌搜索它,但没有实际的术语是不可能的。 最佳答案 刚刚找到了!!它被称为引用折叠比较https://isocpp.org/blog/2012/11/universal-references-in-c11-scott-meyersvoidf(int&&¶m);//initialinstantiationoffwithlvalueBecauseofthereference-to-reference,thisi

c++ - boost::interprocess : cout a string variable when iterating through a map that references an object from a struct

我正在使用boost::interprocess在进程之间共享对象。我有两个文件,一个生成结构对象并将该对象传递到具有int索引的映射中的“server.cpp”;和一个“client.cpp”文件,它检索内存数据并遍历数据,输出到控制台。结构看起来像这样:structmydatao{stringMY_STRING;intMY_INT;};和对象:mydatao;o.MY_STRING="hello";o.MY_INT=45;服务器和客户端都能正确编译。但是出于某种原因,如果我尝试访问客户端中的字符串而不是float或整数,客户端可执行文件会抛出段错误。例如下面的second.MY_I

c++ - 目标文件 "Version References"来自哪里?

目前我所在的目录中有一个文件libshared-object.so(为通用起见更改了名称)。当我运行时$objdump-plibshared-object.so我收到以下输出:libshared-object.so:fileformatelf64-x86-64ProgramHeader:LOADoff0x0000000000000000vaddr0x0000000000000000paddr0x0000000000000000align2**21filesz0x00000000000828eememsz0x00000000000828eeflagsr-xLOADoff0x0000000

C++ 内联汇编 : how to deal with references?

如何处理内联汇编函数中的引用?我正在尝试这个voidfoo(int&x){__asmmovx,10}intmain(){intx=0;foo(x);std::cout但是x在函数执行后仍然是0,但是这个工作正常intx=0;__asmmovx,10std::cout如何解决?谢谢。 最佳答案 引用是一个具有值语义的指针——在汇编语言中这些语义是无关紧要的,所以你只剩下一个指针:voidfoo(int&x){__asm{moveax,xmovDWORDPTR[eax],10}}(当然,YMMV取决于编译器、版本、优化等。使用内联汇编时

c++ - 哪个更好 : returning tuple or passing arguments to function as references?

我创建的代码中有两个函数returnValues和returnValuesVoid。一个返回2个值的元组,另一个接受参数对函数的引用。#include#includestd::tuplereturnValues(constinta,constintb){returnstd::tuple(a,b);}voidreturnValuesVoid(int&a,int&b){a+=100;b+=100;}intmain(){auto[x,y]=returnValues(10,20);std::cout我读到了http://en.cppreference.com/w/cpp/language/st

c++ - 从 C#/Java 到 C++ : Understanding C++ references in an example?

来自C#/Java背景,我正在尝试了解使用C++指针和引用的最佳实践。我敢肯定这已经在这个网站上被令人作呕地覆盖了,但我仍然不完全理解它。我已经阅读了一些C++常见问题解答,但我需要在上下文中查看它。假设我有两个类:classEmployee{Employee();~Employee();}classCompany{Company();~Company();AddEmployee(??employee);??GetEmployee();private:std::listemployees_;}在哪里AddEmployee获取一个员工对象并将其添加到员工的私有(private)列表中。A

c++ - 为什么 std::move 将右值引用作为参数?

根据cppreference.com,move有签名templatetypenamestd::remove_reference::type&&move(T&&t)noexcept;为什么它需要一个右值引用T&&t作为它的参数?同样当我尝试下面的代码时voidfoo(int&&bar){cout我收到编译器错误“右值引用不能绑定(bind)到左值”这是怎么回事?我很困惑。 最佳答案 这不是一个右值引用,而是一个forwardingreference;这可以保留参数的值类别。这意味着std::move可以接受左值和右值,并将它们无条件地

c++ - 数组 : Storing Objects or References

作为一名Java开发人员,我有以下C++问题。如果我有类型A的对象并且我想将它们的集合存储在一个数组中,那么我应该只存储指向对象的指针还是存储对象本身更好?在我看来,存储指针更好,因为:1)通过将对象的指针设置为null,可以很容易地删除对象2)节省空间。 最佳答案 指针还是对象?在C++中不能将引用放在数组中。您可以制作一个指针数组,但我仍然更喜欢容器和实际对象而不是指针,因为:没有机会泄漏,异常安全更容易处理。它并没有减少空间——如果你存储一个指针数组,你需要对象的内存加上指针的内存。我唯一提倡将指针(或智能指针会更好)放入容器