我正在main()使用C++ 连接C程序(在C中).在我的代码中的某些点我想停止执行程序.现在我想知道,我怎么能干净利落地做到这一点?
目前我打电话,std::terminate()但更多的是缺乏更好的想法.让我烦恼的主要问题是,即使我没有释放内存(因为它在程序终止时也被释放了,对吧?)但是MSVS即时调试器会弹出,我收到一个丑陋的错误消息以不寻常的方式终止运行时.
编辑:这已经引起了混乱:从返回main()与return 0不可能在这种情况下.
我想做的事:
我已经使用Matlab Simulink生成了自动生成的C代码,并希望使用C++编写的更多功能来增强它.确切地说,C代码调用内部使用C++的C风格API.整个过程都在VS 2008 C++项目中.
问题:
它编译,只要我告诉VS将其编译为C并省略我的C++代码.一旦我编译它就会出现C++问题.
首先,我无法将其编译为C++,因为math.h会因为对重载函数(fabs())的模糊调用而产生错误C2668.
如果我现在另外添加一些C++,例如包括iostream,我会得到数百个编译器错误,抱怨在cstdlib中缺少花括号和错位的冒号.
我的问题:
如何以有效的方式混合两种语言?我读到了关于预处理器定义(http://www.parashift.com/c++-faq-lite/overview-mixing-langs.html)但我不知道如何正确应用它们来解决我的问题.
任何帮助是极大的赞赏!
我有一个多线程程序,主线程是第三方(无法更改)和纯C.我的任务是围绕它构建新模块(在C++中),那些部分驻留在其他线程中,需要使用C程序的界面.基本上只是读取在C线程中存储和更新的一些变量(整数,浮点数,没有复杂).
现在我的问题是:我如何确保在访问这些变量时不会从C接口中获取垃圾,因为在读取时我无法使用互斥锁将其锁定.这甚至可能吗?或者正在编写一个float/int原子操作?