Questions tagged «c++»

C ++是一种通用编程语言。它最初被设计为C的扩展,并且具有类似的语法,但是现在它是一种完全不同的语言。使用此标记可解决有关将要使用C ++编译器编译的代码的问题。对于与特定标准修订版[C ++ 11],[C ++ 14],[C ++ 17]或[C ++ 20]等相关的问题,请使用特定于版本的标记。

24
保护可执行文件免受逆向工程?
我一直在考虑如何保护我的C / C ++代码免于反汇编和逆向工程。通常,我永远不会在自己的代码中宽恕这种行为。但是,为了所有人的安全,我目前正在研究的当前协议绝不能被检查或理解。 现在,这对我来说是一个新主题,互联网对于预防逆向工程并不是真正有用的资源,而是描述了大量有关如何进行逆向工程的信息 到目前为止,我想到的一些事情是: 代码注入(在实际函数调用之前和之后调用伪函数) 代码混淆(破坏二进制文件的反汇编) 编写我自己的启动例程(调试器很难绑定到) void startup(); int _start() { startup( ); exit (0) } void startup() { /* code here */ } 运行时检查调试器(如果检测到,则强制退出) 功能蹦床 void trampoline(void (*fnptr)(), bool ping = false) { if(ping) fnptr(); else trampoline(fnptr, true); } 没有意义的分配和释放(堆栈变化很多) 无意义的虚拟呼叫和蹦床(拆卸输出中的大量跳跃) 吨铸件(用于模糊拆卸) 我的意思是,这是我想到的一些事情,但是在适当的时间范围内,代码分析人员可以解决所有这些问题,或者可以由代码分析人员弄清楚这些问题。我还有别的选择吗?
210 c++  c  obfuscation  assembly 


28
Linux是否有C ++ gdb GUI?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 3年前关闭。 改善这个问题 简要地说:有没有人知道gdb的GUI可以将其带到与Visual C ++的最新版本相当或接近的功能集? 详细信息:作为一个在Windows上花费了大量时间的人,每当我必须在Linux中编写C ++时,我发现的最大绊脚石之一是,使用命令行gdb进行调试比将其花费的时间长了数倍。 Visual Studio,实践似乎并没有变得更好。有些事情更容易或更快速地以图形方式表达。 具体来说,我正在寻找一个GUI: 处理所有基础知识,例如步入和进入代码,观察变量和断点 了解并可以显示复杂和嵌套的C ++数据类型的内容 在显示相关信息(例如参数类型)时,不要被困惑,最好能智能地逐步浏览模板化的代码和数据结构 可以处理线程化应用程序并在不同线程之间切换以单步执行或查看其状态 除了在gdb中启动程序外,还可以处理附加到已经启动的进程或读取核心转储的问题 如果不存在这样的程序,那么我想听听人们在使用至少满足某些要点的程序方面的经验。有人有什么建议吗? 编辑: 列出可能性是巨大的,我会尽我所能,但是如果您可以在响应中包括它,它将更加有帮助: (a)是否实际使用了此GUI,如果可以, ,您对此有何正面/负面反馈。 (b)如果您知道/不支持上述哪些功能 列表很容易获得,像这样的站点很棒,因为您可以了解人们在应用程序方面的个人经历。
210 c++  linux  gdb  debugging 


8
将捕获lambda作为函数指针传递
是否可以将lambda函数作为函数指针传递?如果是这样,我肯定做错了什么,因为我遇到了编译错误。 考虑以下示例 using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {} private: DecisionFn _dec; }; int main() { int x = 5; Decide greaterThanThree{ [x](){ return x > 3; } }; return 0; } 当我尝试对此进行编译时,出现以下编译错误: In function 'int main()': 17:31: error: the value of 'x' is …

5
为什么未定义整数溢出定义行为,但没有定义整数溢出?
C和C ++标准都很好地定义了无符号整数溢出。例如,C99标准(§6.2.5/9)指出 涉及无符号操作数的计算永远不会溢出,因为无法用所得的无符号整数类型表示的结果的模数要比该所得类型可以表示的最大值大一模。 但是,两个标准都指出有符号整数溢出是未定义的行为。同样,根据C99标准(§3.4.3/1) 未定义行为的一个示例是整数溢出时的行为 是否存在这种差异的历史原因(甚至更好!)是技术原因?

30
Linux版C ++ IDE?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 4年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我想将编程视野扩展到Linux。一个好的,可靠的基本工具集很重要,还有什么比IDE更基本的呢? 我可以找到以下SO主题: 适用于Linux和Windows的轻量级IDE 您使用什么工具在Linux上开发C ++应用程序? 我不是在寻找轻量级的 IDE。如果一个IDE值得花钱,那么我会为此付费,因此它不必免费。 然后,我的问题是: Linux有什么好的C ++编程IDE? 最低限度是相当标准的:语法高亮,代码完成(例如intellisense或其Eclipse对应物)和集成调试(例如基本断点)。 我自己搜索过它,但是有太多的东西几乎是不可能的,要手工将好与坏分开,特别是对于像我这样在Linux上几乎没有C ++编码经验的人。我知道Eclipse支持C ++,我真的很喜欢Java的IDE,但是它对C ++有好处吗,还有什么更好的选择吗? 第二篇文章实际上提出了一些好的建议,但是我所缺少的是究竟是什么使Sugested IDE对用户如此好,其(缺点)有什么优点? 因此,也许我的问题应该是: 您提出什么IDE(根据您的经验),为什么?
209 c++  linux  ide 

6
在C ++中,“ long”,“ long long”,“ long int”和“ long long int”有什么区别?
我正在从Java过渡到C ++,并对long数据类型有一些疑问。在Java中,要保留大于2 32的整数,只需编写即可long x;。但是,在C ++中,似乎long既是数据类型又是修饰符。 似乎有几种使用方式long: long x; long long x; long int x; long long int x; 另外,似乎还有一些事情,例如: long double x; 等等。 所有这些各种数据类型之间有什么区别,它们都有相同的用途吗?
209 c++  long-integer 

15
语言如何自我扩展?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 改善这个问题 我正在学习C ++,并且刚刚开始学习Qt的一些功能来编写GUI程序。我问自己以下问题: 以前没有语法能够向操作系统询问窗口或通过网络进行通信的方法(我承认我也不完全理解的API)的C ++突然如何通过用C ++自己编写的库获得这种功能?对我来说,一切似乎都是圆圆的。您可能在这些库中提出了哪些C ++指令? 我意识到对于一个经验丰富的软件开发人员来说,这个问题似乎微不足道,但是我已经进行了数小时的研究,没有找到任何直接的答案。到了我无法理解有关Qt的教程的地步,因为库的存在对我来说是不可理解的。

22
为什么C#不提供C ++样式的“ friend”关键字?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 3年前关闭。 改善这个问题 在C ++朋友关键字允许class A指定class B作为其朋友。这允许Class B访问的private/ protected成员class A。 我从来没有读过任何关于为什么C#(和VB.NET)不包含此内容的信息。对于这个较早的StackOverflow问题的大多数答案似乎都是在说它是C ++的有用组成部分,并且有充分的理由使用它。以我的经验,我必须同意。 在我看来,另一个问题确实是在问如何friend在C#应用程序中执行类似的操作。尽管答案通常围绕嵌套类,但似乎并不像使用friend关键字那样优雅。 原始的《设计模式》一书在整个示例中都定期使用它。 因此,总而言之,为什么friendC#缺少它?在C#中模拟它的“最佳实践”方法是什么? (顺便说一句,internal关键字不是同一回事,它允许整个程序集中的所有类访问internal成员,而friend允许您为某个类提供对另一个类的完全访问权限)
208 c#  c++  design-patterns  oop  friend 




17
g ++对typeinfo的未定义引用
我只是遇到以下错误(并在线找到了解决方案,但是它在Stack Overflow中不存在): (.gnu.linkonce。[stuff]):对[方法] [目标文件]的未定义引用:( .. gnu.linkonce。[stuff]):对'[classname]的typeinfo的未定义引用 为什么可能会收到这些“对typeinfo的未定义引用”链接器错误之一? (如果您可以解释幕后发生的事情,则可以加分。)
208 c++  linker  g++ 

11
如何开始开发Internet Explorer扩展?
在座的人中是否有人具有开发或共享知识的IE扩展的经验?这将包括代码示例,或指向好的示例的链接,或有关流程的文档,或任何内容。 我真的很想这样做,但是我却遇到了糟糕的文档,糟糕的代码/示例代码/缺少它。您可以提供的任何帮助/资源将不胜感激。 具体来说,我想从如何从IE扩展中访问/操纵DOM开始。 编辑,更多详细信息: 理想情况下,我想植入一个工具栏按钮,单击该工具栏按钮时,会弹出一个包含指向外部站点的链接的菜单。我还想访问DOM并根据某些条件在页面上植入JavaScript。 在IE扩展中保留信息的最佳方法是什么?在Firefox / Chrome /大多数现代浏览器中,您使用window.localStorage,但显然不能与IE8 / IE7一起。也许是SQLite数据库或类似的?可以假设将.NET 4.0安装在用户的计算机上吗? 我不想使用Spice IE,因为我也想构建一个与IE9兼容的。我也向这个问题添加了C ++标记,因为如果最好在C ++中构建一个,则可以这样做。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.