回答
该标准肯定不会招待这样的功能。
假设您正在使用一个现代的主管编译器来编译包含throw
的代码,那么编译器将会报错。但是,当然,你可以编译代码的一部分,但不包含异常,在这种情况下,仍然会抛出异常,但无法捕获它们(因为没有catch
)。所以程序可能会在抛出第一个异常时终止。
如果提供标题,你可以只添加一个虚拟函数具名命名空间:
namespace {
inline void dummy_dummy_my_thing_to_check_exceptions()
{
throw 123;
}
}
甚至从来没有调用这个函数,它仍然会编译失败。我怀疑任何可以让你关闭异常的编译器都会接受这样做的代码 - 我尝试过使用g ++ 4.8.2,g ++ 4.6.3,clang ++ 3.6.0(截至三周前)和clang ++ 2.9 。所有在头文件中给出上述函数的错误。如果我删除-fno-exceptions
,代码编译和运行(与终止监守的代码做throw 1
在功能
总代码:
XH:
extern int func();
namespace {
inline void dummy_dummy_my_thing_to_check_exceptions()
{
throw 123;
}
}
x.cpp:
int func()
{
throw 1;
}
except.cpp:
#include "x.h"
int main()
{
func();
}
与编译:
g++ -c except.cpp && g++ except.o x.cpp
或
clang++ -c except.cpp && clang++ except.o
,
但不会编译:
g++ -c except.cpp -fno-exceptions && g++ except.o x.cpp
或
clang++ -c except.cpp -fno-exceptions && clang++ except.o
。
Your're right ...我使用GCC,MinGW,MinGW W64,CLang和MSVC ...所有这些都编译我没有错误,如果我尝试禁用GCC和CLang中的异常,它不会编译,但在MSVC中,我不想这样做。这就是问题的原因,检测异常的禁用并避免编译。 – yayuj 2014-09-24 23:27:58
- 1. iPhone - 有没有办法知道引用是否(仍然)有效?
- 2. 有没有办法知道一个对象的C#方法是否被调用?
- 3. 有没有办法知道用户是否发送了短信?
- 4. 有没有办法知道Data Saver是否启用?
- 5. 有没有办法知道用户是否打开邮件?
- 6. 有没有办法知道文件名是否是Excel格式?
- 7. 有没有办法知道手机是否有通话?
- 8. 有没有办法知道timerTask是否已完成?
- 9. 有没有办法知道一行是否更新?
- 10. 有没有办法知道Flash Player是否安装了SWFObject?
- 11. 有没有办法知道rxjs websocket是否打开
- 12. 有没有办法知道ExecutorService是否成功结束?
- 13. 有没有办法知道HttpResponse是否在Https中?
- 14. 有没有办法知道是否已经创建了IWin32Window?
- 15. 有没有办法知道$ http请求是否超时?
- 16. 有没有办法检测通知栏是否已被清除?
- 17. iOS:有没有办法知道用户是否选择了退出通知?
- 18. 有没有办法让webpack知道全局是否没有声明?
- 19. 有没有办法让对象知道它被添加到DOM?
- 20. Slack:是否有办法禁用所有@channel通知
- 21. 有没有办法知道iOS键盘真的被隐藏(被用户解雇)?
- 22. 有没有办法知道当前域是否启用地理定位?
- 23. 有没有办法知道用户是否喜欢Facebook上的对象?
- 24. 有没有办法知道电子邮件是否用C#成功转发?
- 25. 有没有办法知道客户是否使用了优惠券代码?
- 26. 有没有办法知道SD卡上的目录是否有任何图像?
- 27. 有没有办法用JCLDebug来捕获所有的异常(即使是那些被处理的异常)?
- 28. 是否有办法禁用Typesafe Activator UI
- 29. 有什么办法可以知道报告是否有订阅
- 30. 有没有办法检查RVO是否被应用?
任何禁用异常取决于使用的工具,库,OS ... =>您的问题的答案也取决于这一点。标准C没有例外。 – deviantfan 2014-09-24 22:57:41
@deviantfan:标准* C++ *,但是,有一些例外。 – 2014-09-24 23:03:08
如果你正在编译SOURCE代码(包括头文件)并且没有“例外”,并且有一些抛出异常的代码,那么编译器会出错(至少在g ++和clang ++中) - 换句话说,编译。 – 2014-09-24 23:03:46