草庐IT

c++ - 测试 C/C++ 源代码

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicates:SuggestionforUnitTesttoolsforC++ChoosingaC++unittestingtool/frameworkUnitTestingCCode这是我一直想知道的事情,因为我们必须使用C/C++作为我们一些大学项目的基础语言:在Java中有JUnit,在PHP中有PHPUnit等等如何在C/C++中完成单元测试?这可能是个愚蠢的问题,但我想我从来没有读过应用程序(源代码)是如何进行单元测试的——如果C/C++中甚至有这样的东西——除了“检查代码是否编译。

c++ - Lua协程-setjmp longjmp破坏?

在不久前的blogpost中,ScottVokes使用C函数setjmp和longjmp描述了与lua实现协程相关的技术问题:ThemainlimitationofLuacoroutinesisthat,sincetheyareimplementedwithsetjmp(3)andlongjmp(3),youcannotusethemtocallfromLuaintoCcodethatcallsbackintoLuathatcallsbackintoC,becausethenestedlongjmpwillclobbertheCfunction’sstackframes.(Thisis

c++ - 如何在 C 中 stub 套接字?

我编写的客户端代码应该通过套接字发送一些数据并从远程服务器读回一个答案。我想对该代码进行单元测试。该函数的签名类似于:doublecall_remote(double[]args,intfd);其中fd是到远程服务器的套接字的文件描述符。现在call_remote函数将在发送数据后阻止从服务器读取答案。如何stub这样的远程服务器以对代码进行单元测试?理想情况下我想要这样的东西:intmain(){intstub=/*initializestub*/doubleexpected=42.0;assert(expected==call_remote(/*args*/,stub);retur

c++ - 使用 Bluez 的 C/C++ BLE 读/写示例

我开始使用微Controller和树莓派(tardisBLE加密狗)构建一个简单的BLE网络。作为起点,我正在寻找一个简单的C或C++示例来读/写BLE设备,类似于我能够通过命令行执行的操作。到目前为止,我发现的示例非常复杂。作为BLE初学者,在进行更复杂的设计之前,我需要一些非常简单的示例来构建。我可以像下面的gatttool示例中那样对BLE设备名称进行硬编码。这是我目前如何使用Bluez的命令行选项。从命令行我可以使用:$sudohcitoollescanLEScan...BB:A0:50:02:18:07MyDevice接下来我可以使用gatttool在命令行上连接到设备:$s

c++ - 内存映射文件和指向易失对象的指针

我对C和C++中volatile语义的理解是它将内存访问变成了(observable)sideeffects.每当读取或写入内存映射文件(或共享内存)时,我都希望指针是volatile限定的,以表明这实际上是I/O。(JohnRegehr在volatile的语义上写了一篇非常好的article)。此外,我希望使用像memcpy()这样的函数来访问共享内存是不正确的,因为签名表明volatile限定被丢弃,并且内存访问不被视为我/哦。在我看来,这是一个支持std::copy()的论点,其中volatile限定符不会被丢弃,内存访问被正确地视为I/O。但是,我使用指向volatile对象的

c++ - 使用 ifstream 作为 fscanf

假设我有如下输入:N(X_1,Y_1)(X_2,Y_2)....(X_N,Y_N)其中N、X_i和Y_i是整数。一个例子:2(55,1)(521,7)要阅读这篇文章,我可以这样做(假设所有变量都已定义,等等):fscanf(fin,"%d",&N);for(inti=0;i问题是,我怎样才能使用ifstream轻松地做到这一点。我可以获得字符串,然后我可以摆脱非数字并使用stringstream我可以获得两个数字,但这似乎有点麻烦。有没有更简单、更优雅的方法?谢谢 最佳答案 intn,x,y;charc;if(is>>n)for(i

c++ - 什么时候 'identifier' 在 C++ 中是 'name'?

C++中的“标识符”何时称为“名称”?我主要读到术语“名称”被过度使用,而不是示例中的“标识符”:structS{inti};Sthing1;在这种情况下,thing1是名称还是标识符?还是术语“标识符”和“名称”是类似的?在C中,在引用对象时是否使用术语“名称”? 最佳答案 在C++中,标识符只是一个数字、字母和_的序列。,不以数字开头。这样的标识符可以出现在任何地方,并且不必标识任何东西,尽管它的名字(没有双关语意)。术语名称将含义与特定语法结构相关联。C++规范规定,如果以下语法结构之一表示实体(对象、类、模板和依此类推)或标

c++ - 是否有可能有 'times out' 的源代码(在某个时刻后变得无效)?

我们目前正忙于从VisualStudio2005迁移到VisualStudio2010(使用非托管C/C++)。这意味着我们大约一半的开发人员已经在使用VisualStudio2010,而另一半仍在使用VisualStudio2005。最近,我遇到了一种情况,可以在VisualStudio2010中以干净的方式编写某种构造,但是在VisualStudio2005中需要不太干净的源代码。因为并非所有开发人员的机器上都已经安装了VisualStudio2010,所以我必须编写如下代码:#if_MSC_VER>=1600//cleanversionofthesourcecode#else//

c++ - C/C++ 中的函数式编程?

我一直在读这篇文章:http://en.wikipedia.org/wiki/Function_pointer我有点困惑。既然C/C++支持函数指针,那不就意味着它们普遍支持函数式编程吗?请注意,我实际上并不想使用C或C++进行函数式编程,但我很好奇,因为我从未听说过C或C++支持这样的事情。(我知道C中存在许多函数式编程语言的编译器,但这并不是我所说的“支持”的真正意思)。 最佳答案 函数式编程(如果你真的感兴趣,请查一查)与函数指针关系不大或没有函数指针。C++是一种多范式语言,对FP有很大的支持,尤其是后来的版本。许多与WG2

c++ - 在 CUDA 内核中使用 char 变量会受到惩罚吗?

我似乎记得得到提示,我应该尽量避免在CUDA内核中使用char,因为SM喜欢32位整数。使用它们会有一些速度损失吗?比如做起来是不是比较慢inta[4];intb=a[0]+a[1]+a[2]+a[3];a[1]=a[3];a2[0]=a[0]比chara[4];charb=a[0]+a[1]+a[2]+a[3];a[1]=a[3];a2[0]=a[0]在内核代码中?注意事项:我对使用char值进行算术运算、执行比较以及将它们读写到内存中的惩罚很感兴趣。 最佳答案 预先快速说明:在C/C++中,char的符号是实现定义的。当使用ch