Tag: C#的

为什么列表初始化(使用花括号)比替代scheme更好?

MyClass a1 {a}; // clearer and less error-prone than the other three MyClass a2 = {a}; MyClass a3 = a; MyClass a4(a); 为什么? 我找不到答案,所以让我回答我自己的问题。

代表和事件之间有什么区别?

代表和事件之间有什么区别? 不要同时持有可执行函数的引用吗?

无法build立SSL / TLS安全通道 – SOAP的信任关系

我有一个简单的Web服务调用,由.NET(C#)2.0 Windows应用程序生成,通过由Visual Studio生成的Web服务代理,也用C#(2.0)编写的Web服务。 这已经工作了好几年了,而且还在十几个地方继续这样做。 新网站的新安装会遇到问题。 尝试调用Web服务时,失败并显示消息: 无法build立SSL / TLS安全通道的信任关系 Web服务的URL使用SSL(https://) – 但是这已经在许多其他位置上工作了很长时间(并继续这样做)。 我在哪里看? 这可能是Windows和.NET之间的安全问题吗? 如果是这样,我在哪里build立信任关系? 我迷路了!

何时在C ++中使用extern

我正在阅读“Think in C ++”,它只是介绍了extern声明。 例如: extern int x; extern float y; 我想我理解的意义(没有定义的声明),但我想知道什么时候certificate有用。 有人可以提供一个例子吗?

Json.NETcachingtypes的序列化信息?

在.NET世界中,当谈到对象序列化时,通常会在运行时检查对象的字段和属性。 在处理大量对象时,使用reflection来处理这个工作通常是很慢的,是不可取的。 另一种方式是使用IL发射或构buildperformance树,从而提供显着的性能增益而不是reflection。 而后者是现代图书馆在处理序列化时select的。 但是,在运行时构build和发布IL需要时间,只有将这些信息caching并重新用于相同types的对象时,投资才会被偿还。 当使用Json.NET时,我不清楚上面使用了哪种方法,如果后者确实使用,是否使用caching。 例如,当我这样做时: JsonConvert.SerializeObject(new Foo { value = 1 }); Json.NET是否构build了Foo的成员访问信息和caching以供以后重用?

具有多个可执行文件的Makefile

我正在尝试编写一个使用macros从一个多个文件创build多个可执行文件的makefile。 我试着通过以前回答的问题寻找,但是,因为我对C编程和gcc工作相当新,我无法find我的问题的答案。 这是我到目前为止: CC=gcc CFLAGS=-I. OBJ = ex1.c ex3.c EXECUTABLE = ex1 ex3 $(EXECUTABLE): $(OBJ) gcc -o $@ $^ $(CFLAGS) clean: rm -f $(EXECUTABLE) 我想要这条线 $(EXECUTABLE): $(OBJ) 分别从文件ex1.c ex3.c创build可执行文件ex1和ex3。

在C中使用布尔值

C没有任何内置的布尔types。 在C中使用它们的最好方法是什么?

是传递const std :: string&作为参数的日子吗?

我听到了Herb Sutter最近的一次谈话,他build议通过const & std::vector和std::string的原因很大程度上消失了。 他build议现在写一个如下的函数是比较好的: std::string do_something ( std::string inval ) { std::string return_val; // … do stuff … return return_val; } 我知道return_val在函数返回的位置是一个右值,因此可以使用移动语义来返回,这很便宜。 然而, inval仍然大于参考的大小(通常作为指针实现)。 这是因为std::string具有各种组件,包括一个指向堆的指针和一个用于短string优化的成员char[] 。 所以在我看来,通过引用仍然是一个好主意。 任何人都可以解释为什么赫布可能会这样说?

什么开源的C ++静态分析工具可用?

Java有一些非常好的开源静态分析工具,如FindBugs , Checkstyle和PMD 。 这些工具易于使用,非常有帮助,在多个操作系统上运行并且免费 。 商业C ++静态分析产品可从供应商Klocwork , Gimpel和Coverity获得 。 还有一些不太知名的PVS-Studio分析仪。 虽然这样的产品很棒,但对于学生来说成本太高了,通常很难拿到试用版本。 另一种方法是find可在多个平台(Windows和Unix)上运行的开源C ++静态分析工具。 通过使用开源工具,可以对其进行修改以适应某些需求。 find工具并非易事。 以下是其他人发现或build议的C ++静态分析工具的简短列表。 C ++检查http://sf.net/projects/cppcheck/ Oink http://danielwilkerson.com/oink/index.html C和C ++代码计数器http://sourceforge.net/projects/cccc/ Splint(来自答案) Mozilla的猪肉(从答案)(这是现在的一部分Oink) Mozilla的Dehydra(来自答案) 使用选项-Weffc++ for GNU g ++(来自答案) 什么是任何人都知道,可以推荐的其他便携式开源C ++静态分析工具? 一些相关的链接。 Windows上的C ++静态代码分析工具 http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis http://www.chris-lott.org/resources/cmetrics/ 根据一组编码标准检查C / C ++源代码的免费工具? http://spinroot.com/static/ select一个静态代码分析工具

发送一系列命令并等待响应

我必须更新连接到串行端口的设备上的固件和设置。 由于这是通过一系列命令完成的,我发送一个命令并等待,直到我收到一个答案。 在answere里面(很多行),我search一个string来表示操作是否成功完成。 Serial->write(“boot”, 1000); Serial->waitForKeyword(“boot successful”); Serial->sendFile(“image.dat”); … 所以我为这个阻塞读/写方法创build了一个新的线程。 在线程内部,我使用了waitForX()函数。 如果我调用watiForKeyword(),它将调用readLines(),直到它检测到关键字或超时 bool waitForKeyword(const QString &keyword) { QString str; // read all lines while(serial->readLines(10000)) { // check each line while((str = serial->getLine()) != "") { // found! if(str.contains(keyword)) return true; } } // timeout return false; } readLines()读取所有可用的内容并将其分隔成行,每行放在一个QStringList中,并得到一个string,我调用getLine(),它返回列表中的第一个string并删除它。 bool SerialPort::readLines(int waitTimeout) { if(!waitForReadyRead(waitTimeout)) { qDebug() […]