有什么好的工具可以快速开始parsing和分析C / C ++代码? 特别是,我正在寻找处理C / C ++预处理器和语言的开源工具。 优选地,这些工具将对语法使用lex / yacc(或flex / bison),而不是太复杂。 他们应该处理最新的ANSI C / C ++定义。 这是我到目前为止发现的,但没有详细看过他们(想法?): CScope – 老式C分析仪。 虽然似乎没有做一个完整的parsing。 被形容为一个寻找C函数的荣耀的“grep”。 GCC – 大家最喜欢的开源编译器。 非常复杂,但似乎这样做。 有一个创buildGCC扩展名为GEM的相关项目,但自从GCC 4.1(2006)以来并没有更新。 PUMA – PUre MAnipulator。 (来自页面:“这个项目的意图是提供一个用于分析和操作C / C ++源的类库,为此,PUMA提供了用于扫描,parsing和当然操作C / C ++源的类。 。 这看起来很有希望,但自2001年以来一直没有更新。显然PUMA已经被纳入了AspectC ++ ,但是这个项目自2006年以来还没有更新。 各种C / C ++原始语法。 你可以得到c-c ++ – grammars-1.2.tar.gz ,但是自1997年以来,这个问题一直没有得到维护。一些Googlesearch把其他基本的lex / […]
我正在编译一个使用g++和ld的c ++程序。 我有一个.so库,我想在链接过程中使用。 然而,在/usr/local/lib存在一个相同名称的/usr/local/lib ,而ld则是通过我直接指定的库来select该库。 我该如何解决这个问题? 对于下面的例子,我的库文件是/my/dir/libfoo.so.0 。 我试过的东西不起作用: 我的g ++命令是g++ -g -Wall -o my_binary -L/my/dir -lfoo bar.cpp 将/my/dir添加到我的$PATH en`variables的开始或结尾处 添加/my/dir/libfoo.so.0作为g ++的参数
dynamic分配与new/delete据说是在免费店 , 而malloc/free操作使用堆 。 我想知道在实践中是否有实际的差异。 编译器是否区分这两个术语? ( 免费的商店和堆 ,不是new/malloc )
超载和重写有什么区别。
在他的书The C++ Standard Library (Second Edition) Nicolai Josuttis指出,编译器比普通函数可以更好地优化lambdaexpression式。 另外,C ++编译器比普通函数更好地优化lambdaexpression式。 (页213) 这是为什么? 我认为当谈到内联时,应该没有任何区别了。 我能想到的唯一原因是编译器可能有一个更好的lambdaexpression式的本地环境,这样可以做更多的假设和执行更多的优化。
据我所知,在C ++ 11中引入override关键字只不过是一个检查,以确保正在实现的function是在基类中的virtual函数的override 。 是吗?
如果我有一个名为MyProgram的类,有没有一种方法检索“ MyProgram ”作为一个string?
好的,所以这个问题不仅仅是一个问题,而是在回答这个问题 ,把Dustin Campbell , Egor的各个部分和IObservable / Rx / Reactive框架的最后一个提示放在一起之后,我想我为这个特殊问题找出了一个可行的解决scheme。 它可能完全被IObservable / Rx / Reactive框架所取代,但只有经验才会显示出来。 我故意创造了一个新的问题,给我一些空间来解释我是如何得到这个解决scheme的,因为它可能不是很明显。 有很多相关的问题,大多数告诉你,如果你想能够在以后分离它们,你不能使用内联lambdas: .Net中的弱事件? 在C#中使用lambdas解除事件 可以使用lambda作为事件处理程序导致内存泄漏? 如何取消订阅使用lambdaexpression式的事件? 在C#中取消订阅匿名方法 事实上,如果你希望能够在以后分离它们,你需要保留对lambda的引用。 但是,如果您只是希望事件处理程序在订阅者超出范围时自行分离,则此答案适用于您。
我只是盯着目标C(编写玩具iPhone应用程序),我很好奇用于发送消息的基本机制。 我很好的理解了C ++中的虚函数是如何实现的,以及静态或非虚方法调用的代价是什么,但是我没有Obj-C的背景知道如何发送消息。 浏览周围,我发现这个松散的基准,它提到IMPcaching的消息比虚拟函数调用更快,而这又比标准的消息发送更快。 我不是想优化任何东西,只是更深入地了解消息如何发送。 如何调度Obj-C消息? 实例方法指针如何获得caching,并且你能(通常)通过读取代码告诉消息是否会被caching? 类方法与C函数(或C ++中的静态类方法)本质上是相同的,还是有更多的东西? 我知道其中的一些问题可能是“依赖于实现”,但是只有一个实现是真正重要的。
基本上,我在一个事务中插入35000个对象: using(var uow = new MyContext()){ for(int i = 1; i < 35000; i++) { var o = new MyObject()…; uow.MySet.Add(o); } uow.SaveChanges(); } 这需要永远! 如果我使用底层ObjectContex t(通过使用IObjectAdapter ),它仍然很慢,但大约需要20 IObjectAdapter 。 它看起来像DbSet<>正在做一些线性search,这需要平方米的时间… 其他人看到这个问题?