我的项目目录如下所示: /project Makefile main /src main.cpp foo.cpp foo.h bar.cpp bar.h /obj main.o foo.o bar.o 我想让我的makefile做的是将/src文件夹中的所有.cpp文件编译为/obj文件夹中的.o文件,然后将/obj所有.o文件链接到顶层的输出二进制文件文件夹/project 。 我几乎没有使用Makefiles的经验,而且我不太确定要做什么。 另外,这是一个“好”的方式来做到这一点,或者是有一个更标准的方法来做我想做的?
我想序列化对象到string,并返回。 我们使用protobuf-net将一个对象转换成Stream并返回,成功。 但是,串stream和返回…不是那么成功。 在通过StreamToString和StringToStream ,新的Stream不会被protobuf-net反序列化; 它会引发一个Arithmetic Operation resulted in an Overflowexception的Arithmetic Operation resulted in an Overflow 。 如果我们反序列化原始stream,它就可以工作。 我们的方法: public static string StreamToString(Stream stream) { stream.Position = 0; using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { return reader.ReadToEnd(); } } public static Stream StringToStream(string src) { byte[] byteArray = Encoding.UTF8.GetBytes(src); return new MemoryStream(byteArray); } 我们的示例代码使用这两个: […]
我尝试使用SHA256散列string,我使用下面的代码: using System; using System.Security.Cryptography; using System.Text; public class Hash { public static string getHashSha256(string text) { byte[] bytes = Encoding.Unicode.GetBytes(text); SHA256Managed hashstring = new SHA256Managed(); byte[] hash = hashstring.ComputeHash(bytes); string hashString = string.Empty; foreach (byte x in hash) { hashString += String.Format("{0:x2}", x); } return hashString; } } 然而,这段代码给我的朋友php,以及在线生成器(如这个生成器 )显着不同的结果, 有谁知道错误是什么? 不同的基地?
在.NET中,Windows窗体有一个在Form加载(Form.Load)之前触发的事件,但是在窗体加载后没有相应的事件被触发。 我想在窗体加载后执行一些逻辑。 任何人都可以build议一个解决scheme?
我遇到了一个他们使用__builtin_expect的#define 。 该文件说: 内置函数: long __builtin_expect (long exp, long c) 您可以使用__builtin_expect为编译器提供分支预测信息。 一般来说,您应该更喜欢使用实际的configuration文件反馈( -fprofile-arcs ),因为程序员在预测其程序的实际执行方式方面出了名的糟糕。 但是,有些应用程序难以收集这些数据。 返回值是exp的值,它应该是一个整数expression式。 内置的语义是,预计exp == c 。 例如: if (__builtin_expect (x, 0)) foo (); 会表明我们不希望称为foo ,因为我们预期x为零。 那么为什么不直接使用: if ( x != 0 ) {} else foo( ); 而不是复杂的语法与期望?
这是我经常遇到的一个缺乏经验的程序员的情况,我特别想知道我正在试图优化的一个雄心勃勃,高速度的项目。 对于主要的类C语言(C,objC,C ++,Java,C#等)及其通常的编译器,这两个函数的运行效率如何? 编译代码有没有区别? void foo1(bool flag) { if (flag) { //Do stuff return; } //Do different stuff } void foo2(bool flag) { if (flag) { //Do stuff } else { //Do different stuff } } 从根本上来说,是否有一个直接的效率奖金/罚款提前break或return ? 如何涉及到堆栈? 有没有优化特殊情况? 是否有任何因素(如内联或“做什么”的大小)可能会显着影响这一点? 我总是支持提高可读性,而不是轻微的优化(我在参数validation中看到foo1),但是这样频繁出现,我想一劳永逸地放下所有的担心。 而且我意识到过早优化的陷阱…呃,那些是一些痛苦的回忆。 编辑:我接受了一个答案,但EJP的答案很简洁地解释了为什么使用return几乎可以忽略不计(在汇编中, return创build了一个'分支'到函数结束,这是非常快速的分支改变PC注册,也可能会影响caching和pipe道,这是非常微不足道的。)对于这种情况下,特别是,它没有区别,因为无论是if/else和return创build相同的分支到函数的结尾。
在ASP.NET C#中我有一个结构: public struct Data { public int item1; public int item2; public int category_id; public string category_name; } 我有一个列表。 我想selectcategory_id和category_name ,运行DISTINCT ,最后在ORDERBY上运行ORDERBY 。 这是我现在拥有的: List<Data> listObject = getData(); string[] catNames = listObject .Select(i=> i.category_name) .Distinct() .OrderByDescending(s => s) .ToArray(); 这显然只是获得类别名称。 我的问题是,我怎么得到多个字段,我将什么数据结构存储(不是一个string[] )? 编辑 使用结构列表并不是一成不变的。 如果最好改变我的支持数据结构,使select更容易(我会写很多这些),那么我很乐意采取build议。
我可以通过修改web.config的连接string来增加超时吗?
我们来创build一个补充的问题。 在C ++中获取文件大小的最常见方法是什么? 在回答之前,确保它是可移植的(可以在Unix,Mac和Windows上执行),可靠,易于理解,并且没有库依赖性(没有提升或者qt,但是例如glib是可以的,因为它是可移植的库)。
有没有一种简单的方法来在Visual Studio中设置条件断点? 如果我只想在某个variables的值变成某个东西的时候打断点,我该怎么办呢?