我们正在编译一个embedded式C / C ++应用程序,这个应用程序是在一个被电离辐射轰炸的环境中的屏蔽设备中部署的。 我们正在使用GCC和ARM交叉编译。 部署时,我们的应用程序会生成一些错误的数据,并且会更频繁地崩溃。 硬件是为这个环境devise的,我们的应用程序已经在这个平台上运行了好几年。 我们可以对代码进行修改,还是可以通过编译时的改进来识别/纠正由于单个事件造成的软错误和内存损坏? 有没有其他开发者成功地减less了软件错误对长时间运行的应用程序的有害影响?
我正在读一本书,作者说if( a < 901 )比if( a <= 900 )快。 与这个简单的例子不完全一样,但是在复杂的循环代码上有一些性能改变。 我想这个必须用生成的机器代码来做,以防万一。
我是一些家族树软件(使用C ++和Qt编写)的开发人员。 直到我的一个客户邮寄给我一个错误报告,我才有了问题。 问题是客户有两个孩子和他们自己的女儿,结果,他因为错误而无法使用我的软件。 这些错误是我的各种关于正在处理的家族图的断言和不变式的结果(例如,在循环之后,程序指出X不能既是父亲也是Y的祖父)。 我怎样才能解决这些错误,而不删除所有的数据断言?
我怎样才能使用在Visual C ++中定义的VLA,可变长度的数组,如C99,或者根本不可能? 是的,我知道C ++标准是基于C89的,并且在C89标准中没有可用的VLA,因此在C ++中是不可用的,但MSVC ++也应该是C编译器,也可以使用/ TC编译参数( Compile as C Code (/TC) )。 但是这样做似乎并没有启用VLA,编译过程在编译为C ++( Compile as C++ Code (/TP) )时也会出现相同的错误。 也许MSVC ++ C编译器只是C89兼容或我缺less的东西(一些特殊的结构或编译/定义)? 代码示例: #include <stdlib.h> int main(int argc, char **argv) { char pc[argc+5]; /* do something useful with pc */ return EXIT_SUCCESS; } 编译错误: 错误C2057:预期的常量expression式 错误C2466:不能分配一个常量大小为0的数组 错误C2133:'pc':未知的大小
例如, static void Main() { var someVar = 3; Console.Write(GetVariableName(someVar)); } 这个程序的输出应该是: someVar 我怎样才能做到这一点使用reflection?
我试图find一个Objective-C对象的大小。 我正在使用类似于: NSLog(@"sizeof myObject: %ld", sizeof(*myObject)); 这只是给了我指针的大小。 我究竟做错了什么?
我想知道非托pipe资源。 任何人都可以请给我一个基本的想法?
有谁知道是否有一个很好的C#中的Java Set集合? 我知道你可以通过填充但忽略这些值来使用Dictionary或HashTable来模仿一个集合,但这不是一个很好的方法。
什么是复制elision? 什么是(命名)返回值优化? 他们意味着什么? 在什么情况下可以发生? 什么是限制? 如果你是参考这个问题,你可能正在寻找介绍 。 有关技术概述,请参阅标准参考 。 在这里查看常见情况 。
所以我只是在使用函数指针,我记得你可以这样做: void Foo() { } int main() { void(& func)() = Foo; func(); //::Foo(); } 显而易见的优点是引用引用了有效的对象(除非它们被滥用)或者在这种情况下的函数。 显而易见的缺点是你不能存储一个引用数组,并且不能将它们用于成员函数指针(至less据我所知)。 我的问题:有没有人使用它们(即函数引用 , 而不是函数指针),如果是这样,在什么情况下,你发现他们有用/有帮助? 唯一能看到它们是有用的地方是在使用条件编译时绑定对某个函数的引用。