我正在尝试使用boost :: asio示例之一来尽可能地使用c ++ 11 / TR1库。 原始代码如下所示: void start_accept() { tcp_connection::pointer new_connection = tcp_connection::create(acceptor_.get_io_service()); acceptor_.async_accept(new_connection->socket(), boost::bind(&tcp_server::handle_accept, this, new_connection, boost::asio::placeholders::error)); } 如果我用std::bindreplaceboost::bind ,如下所示: void start_accept() { tcp_connection::pointer new_connection = tcp_connection::create(acceptor_.get_io_service()); acceptor_.async_accept(new_connection->socket(), std::bind(&tcp_server::handle_accept, this, new_connection, boost::asio::placeholders::error ) ); // std::bind(&tcp_server::handle_accept, this, new_connection, _1 ) ); } 我收到一个很大的错误信息,结尾是: /usr/include/c++/4.4/tr1_impl/functional:1137: error: return-statement with a value, in function returning […]
我有一个项目,正确地编译和运行在g ++ 4.8.1和铿锵> = 3.3在c + + 11模式。 但是,当我切换到实验-std=c++1y模式时,在通过Boost.Test间接包含的<cstdio>头文件中的clang 3.3(但不是g ++)扼stream圈(所以我不能轻易地自己改变它) // /usr/include/c++/4.8/cstdio #include <stdio.h> // Get rid of those macros defined in <stdio.h> in lieu of real functions. // … #undef gets // … namespace std { // … using ::gets; // <– error with clang++ -std=c++1y // … } 与以下错误消息: /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/cstdio:119:11:错误:在全局中没有名为“gets”的成员命名空间 在本教程中 ,如何设置一个现代的C […]
我已经在web.config文件中注意到了这一段,现在我正在试图理解目的是什么: <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> 所以,第一个条目似乎是这样说的: System.Web.Helpers是一个公钥标记为31bf3856ad364e35的从属程序集的名称。 将版本1.0.0.0到2.0.0.0redirect到版本2.0.0.0。 我最好的猜测是,它意味着在ASP.NET运行时环境中执行的任何代码都依赖于具有指定名称的程序集,该程序集也具有指定范围内的版本,就像执行指定版本指定的公钥。 这是否意味着如果我有一个Web项目依赖于一个类库,并且该类库有一个具有一个bindingRedirect的程序集的旧版本的引用,该代码将执行,如果它被编译为较新的版本?
从search中我可以看到这已经被一次又一次地提出,但是还不够充分,所以在这里。 我是一个没有预算的业余爱好者。 我一直在开发的程序一直需要定期修正错误,我和用户已经厌倦了手动更新。 我,因为我目前通过FTP更新文本文件的解决scheme和我网站上的下载链接,然后希望用户会看到“有更新的消息”,最后让他们感到困扰,手动下载更新,好坦率地说,是非常糟糕的。 用户,因为,“你打算实施自动更新吗?” “会不会有自动更新function? 如果我碰巧搞砸了更新过程,干草叉开始到达。 过去我曾看过: WinSparkle – 没有应用程序内更新,并且该DLL是500 KB。 我目前的解决scheme是可执行文件中的几个KB,没有应用程序内更新。 .NET应用程序更新组件 – 不幸的是我不能理解文档。 Eduardo Olivera的自动更新 – 除了处理未使用的文件之外,这似乎不支持任何其他function。 wyUpdate – wyBuild不是免费的,虽然wyUpdate规范是可用的,但它通过太复杂和耗时。 AppLife更新 – 同上最后一句。 ClickOnce – 在启动时执行启动的解决方法是巨大的,可怕的,不值得这样一个简单的function。 出版是一种痛苦; 手动FTP和所有文件的replace是不需要FrontPage扩展的服务器。 如果你已经有了像Sparkle这样的Mac OS X的非常好的和简单的实现,那么Windows的情况就是这样的。
最近我被要求写一个函数,读取二进制文件到std::vector<BYTE>其中BYTE是一个unsigned char 。 很快,我来到这样的事情: #include <fstream> #include <vector> typedef unsigned char BYTE; std::vector<BYTE> readFile(const char* filename) { // open the file: std::streampos fileSize; std::ifstream file(filename, std::ios::binary); // get its size: file.seekg(0, std::ios::end); fileSize = file.tellg(); file.seekg(0, std::ios::beg); // read the data: std::vector<BYTE> fileData(fileSize); file.read((char*) &fileData[0], fileSize); return fileData; } 这似乎是不必要的复杂和显式强制转换char* ,我不得不使用调用file.read不会让我感觉好一点。 另一个select是使用std::istreambuf_iterator : std::vector<BYTE> readFile(const […]
我已经使用PB了一段时间了,但是,Thrift一直在我的脑海里。 节俭的主要优点,正如我所看到的那样: 本机集合(即vector,集合等)与PB重复提供类似的function,但不太相似(除非您深入到文档所述的“不应该在大多数情况下需要”的RepeatedField,否则没有迭代器)。 提供了一个体面的RPC实现,而不是只是挂钩插入自己的。 更多官方支持的语言(PB提供对Java,C ++,Python的“官方”支持) 节俭的缺点: RPC的实现意味着我不能在我自己的(例如)encryption/身份validation层顶部插入。 Windows支持似乎不是很好。 PB似乎有,如果不是更好,更可访问的文件。 中性: Windows上的.lib / .dll的大小(Thrift)。 在Windows上大尺寸的.lib(PB,但它确实提供了一个明显更小的–lite)。 速度明智,他们似乎都是相似的。 我还没有准备好冒险,转而使用Thrift,任何人都可以为我提供更多的优点/缺点,或者有其他原因。 谢谢!
我有一些input被input文件stream(例如)读取: -365.269511 -0.356123 -Inf 0.000000 当我使用std::ifstream mystream; 从文件中读取一些 double d1 = -1, d2 = -1, d3 = -1, d4 = -1; (假设mystream已经打开,文件有效), mystream >> d1 >> d2 >> d3 >> d4; mystream处于失败状态。 我期望 std::cout << d1 << " " << d2 << " " << d3 << " " << d4 << std::endl; 输出 -365.269511 […]
在gcc-strict-aliasing-and-casting-through-a-union中,我询问是否有任何人遇到指向工会的问题。 到目前为止,答案似乎是没有 。 这个问题更广泛:你有没有关于gcc和严格别名的恐怖故事? 背景: 在c99-strict-aliasing-rules-in-c-gcc中引用AndreyT的答案 : “严格的锯齿规则植根于标准化时代以来存在于C和C ++中的标准的一部分,C89 / 90(6.3)中存在禁止通过另一种types的左值访问一种types的对象的子句。 )以及C ++ 98(3.10 / 15)……只是并非所有的编译器都想要(或敢于)执行或依赖它。 那么, gcc现在正在用它的-fstrict-aliasing开关来这么做。 这导致了一些问题。 例如,请参阅有关Mysql bug的优秀文章http://davmac.wordpress.com/2009/10/以及http://cellperformance.beyond3d.com/articles/2006/06/understanding中的同样出色的讨论-strict-aliasing.html 。 其他一些不太相关的链接: 业绩冲击的-FNO严格走样 严格走样 当-是炭安全换严格指针走样 如何对检测严格走样,在编译时 所以要重复一遍,你有自己的恐怖故事吗? 没有用“ -Wstrict-aliasing表示的问题当然是优选的。 而其他的C编译器也是受欢迎的。 6月2日新增 :迈克尔·伯尔(Michael Burr)的答案中的第一个链接确实是一个恐怖故事,或许有点过时(从2003年开始)。 我做了一个快速testing,但问题显然已经消失。 资源: #include <string.h> struct iw_event { /* dummy! */ int len; }; char *iwe_stream_add_event( char *stream, /* Stream of events […]
首先我想说这不是一个复制 。 以前我问过这个问题,但当它不是时,它会被重复closures。 这个问题对于VS 2010来说是特定的,对于VS 2008中所谓的重复工作的回答,而不是在VS 2010中(至less不是我或者任何我认识的人)。 所以,在你把东西作为一个重复的东西之前,你仔细阅读这个问题,然后尝试为自己的答案,看看它是否真的有效。 对这种咆哮道歉,但没有明显的方式联系SO警方,解决问题或重新打开。 {/咆哮} 在工作中,我们有一个拥有80多个项目的C#解决scheme。 在VS 2008中,当解决scheme中的项目无法构build时,我们使用macros来停止编译(有关VS 2005和VS 2008的几个选项,请参阅此问题:首先自动停止Visual C ++ 2008编译错误? 在VS 2010中可以做到这一点吗? 我们发现,在VS 2010中,这些macros不起作用(至less我不能让它们工作),因为看起来VS 2010中的环境事件不会触发。 默认行为是尽可能地继续,并在错误窗口中显示错误列表。 我很高兴,只要遇到错误(文件级别),或者一旦项目无法build立(项目级别),就立即停止。 请只有VS 2010的答案。 如果macros能够工作,那么请详细解释如何为VS 2010configuration它们。 谢谢。
我想知道是否可以在Ubuntu上运行Xamarin。 我不喜欢java,所以我想用C#制作Android应用程序。 是Ubuntu的包,因为我到目前为止还没有看到一个包? 要么… 我可以使用Wine在Ubuntu上运行Xamarin吗? 要么… 有没有在Ubuntu上运行的替代软件(具有相同的function)?