草庐IT

cpp_exceptions_handling

全部标签

c++ - Protocol Buffer cpp 嵌入消息

我的.proto文件看起来像messageCmd{intcode=1;}messageCmdOne{requiredCmdcmd=1;requiredintdata=2;}messageCmdTwo{requiredCmdcmd=1;requiredstringdata=2;}在我的cpp文件中,我想声明CmdOne和CmdTwo的对象并设置cmd和data成员。但是生成的pb.h文件没有CmdOne和CmdTwo对象的cmd成员的set方法,而是有一个data成员的set方法。如何为每个对象设置cmd的值?我不想在CmdOne和CmdTwo消息中定义消息Cmd。我想重用Cmd消息,因

c++ - "only one implementation"规则的异常(exception)?

当我阅读thisquestion的已接受答案时,我有以下问题:通常,方法在头文件(.hpp或其他)中定义,并在源文件(.cpp或其他)中实现。包含“源文件”(#include)是不好的做法的主要原因之一是它的方法实现会被复制,从而导致链接错误。当一个人写的时候:#ifndefBRITNEYSPEARS_HPP#defineBRITNEYSPEARS_HPPclassBritneySpears{public:BritneySpears(){};//Heretheconstructorhasimplementation.};#endif/*BRITNEYSPEARS_HPP*/他给出了构造

c++ - Visual Studio 中的多个主要 CPP 文件?

我有一些软件的示例目录,其中包含多个具有多个main函数的文件。我可以将所有这些文件组装到一个项目中,编译它们然后运行特定的文件而不会出现mainalreadydefined错误吗?假设我不想为每个cpp文件创建单独的项目。更新我需要简单的一键式两次单击解决方案(如果存在)。我不想在文件夹之间分发文件或重构文件内容。例如,在Eclipse/Java中,您可以用main右键单击​​任何文件并运行它。并且一个项目中可以有多个主文件。这对VisualStudio/CPP可行吗?更新2我知道C++不是Java,VisualStudio也不是Eclipse。我的问题是关于一些手动操作的自动化。

c++ - 是否可以使用其他 cpp 文件中的#define?

我认为预处理器会一个接一个地处理文件,但我不知道如何使用include来处理,所以我认为这是不可能的,但很高兴听到其他人的想法。我在a.cpp中有:#defineA1我想在2.cpp中使用它。编辑:我无法修改第一个文件。所以现在我只是复制了定义。但问题仍然悬而未决。 最佳答案 其他翻译单元看不到源文件中的定义。实现文件单独编译。你可以将它们放在标题中并包含在内使用编译器的选项以理智的方式去做-externconstintA=1;在一个实现文件中,并在你想使用它时声明它externconstintA;。其中,我会说第一个选项可能是您可

c++ - 配置 netbeans 8.0 gdb 以使用 gradle cpp 插件

最近我从Windows7中的VisualStudio切换到带有Netbeans8.0(C++)的Ubuntu。从那时起,我在从NetBeans调试我的应用程序时遇到了很大的问题(gdb工作得很好)。我用gradle编写了helloworldc++来演示我的问题。我花了很多时间,但没有任何重大进展。Gradle项目build.gradle:applyplugin:'cpp'executables{helloWorld}binaries.all{cppCompiler.args"-g"}主要.cpp:#include#includeintmain(void){inta=10;intb=12

C++11 'native_handle' 不是 'std::this_thread' 的成员

在下面的代码片段中,voidfoo(){std::this_thread::native_handle()....//errorhere}intmain(){std::threadt1(foo);t1.join();return0;}如何从函数foo中的std::this_thread获取native_handle? 最佳答案 线程无法自动获得对其自身std::thread的访问权。这是有意为之的,因为std::thread是一种只能移动的类型。我相信您要求的是std::thread::id的native_handle()成员,这是

c++ - 如何检测我的代码是否使用 -fno-exceptions 进行编译?

我正在编写一个C++库,我想让我的API为无效参数抛出异常,但是当使用-fno-exceptions编译代码时,我依赖于断言。有没有办法在编译时检测我是否被允许使用异常处理?请注意,我正在编写一个仅包含header的库,因此我没有configure阶段,也无法访问构建系统来简单地在命令行上定义一个宏(并且我不想给用户增加负担)。由于标准没有任何“-fno-exceptions”的概念,当然解决方案可能依赖于编译器。在这种情况下,我对同时使用g++和clang++的解决方案感兴趣,其他编译器对于这个项目并不重要。非常感谢 最佳答案 G

c++ - std::exception 的 what() 返回 "std::exception"

这里的Java人一直在做一些C++。我正在捕获一个异常并试图诊断它来自哪里(遗憾的是当通过gdb运行时没有抛出异常)。但是,当我打印出异常的what()时,我只是得到字符串“std::exception”。这是特定于标准库中的任何东西还是很多标准异常都返回这个?这是我要打印的内容:}catch(conststd::exception&ex){std::cout输出只是:std::exception另外,我在一个相当大的代码库中工作,这可能是我们这边的一些异常,但我还没有通过常规搜索技术找到它,所以我目前倾向于这个即将到来的来自标准库。如果相关的话,我正在使用g++4.8。

Failed to obtain JDBC Connection;nested exception is dm.jdbc.driver.DMException:初始化SSL环境失败

背景一个基于若依单体架构的多模块Maven项目的国产化迁移适配,由于是客户的代码,我们不用关心具体的功能实现,直接来做迁移即可。实施时,按照我们总结的整改建议调整源码,具体迁移适配过程可参考本专栏的其他文章。组件信息组件操作系统:麒麟V10CPU:HUAWEI,Kunpeng920数据库:达梦8东方通:TongWeb7JDK:1.8.0_272OpenJDKOpenssl:1.1.1f反向代理:Nginx1.20.2缓存服务:Redis6.2.6Python:3.7.9系统环境#操作系统[root@localhost~]#uname-aLinuxlocalhost4.19.90-24.4.v2

Exception in thread “main“ java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.base/jdk

 解决方案:对此,小编总结出两种解决方案,小编个人觉得第二种更方便简单,希望可以帮助到大家方法一:1.确保已经下载下驱动包,如若没有,点击下载:MySQL::DownloadConnector/J默认为最新版本,红线部分可以切换至以前版本,这里我选择5.1.48的版本,如下图:  2.导入驱动包    (1)找到你下载下来的包中mysq-connector-java-5.1.48-bin.jar文件,如下图     (2)找到你下载的jdk文件下面jre文件下面lib文件下面的ext文件        完整目录:jdk\jre\lib\ext         3.在idea中导入jar包点击F