我正在尝试做如下的事情: enum E; void Foo(E e); enum E {A, B, C}; 编译器拒绝。 我在Google上看了一下,看来共识似乎是“你做不到”,但我不明白为什么。 谁能解释一下? 非常感谢。 澄清2:我这样做,因为我有在一个类中的私有方法采取说枚举,我不希望枚举的值暴露 – 所以,例如,我不想让任何人知道E被定义为 enum E { FUNCTIONALITY_NORMAL, FUNCTIONALITY_RESTRICTED, FUNCTIONALITY_FOR_PROJECT_X } 因为项目X不是我想让我的用户知道的东西。 所以,我想转发声明枚举,所以我可以将私有方法放在头文件中,在cpp内部声明枚举,并将构build的库文件和头分发给人。 至于编译器 – 这是GCC。
为什么我们需要使用: extern "C" { #include <foo.h> } 特别: 我们应该什么时候使用它? 在编译器/链接器级别发生什么事情需要我们使用它? 如何在编译/链接方面解决需要我们使用它的问题?
可能重复: 任何人都知道一个很好的解决方法,缺乏枚举通用约束? C#背后的原因是不允许Enum的types限制? 我确信疯狂背后有一种方法,但我想明白为什么这是不可能的。 以下是我希望能够做到的(理论上)。 public static T GetEnum<T>(this string description) where T : Enum { … }
@R的这个答案。 马丁·费尔南德斯(Martinho Fernandes)表示,安全布尔成语在C ++ 11中被明显弃用,因为它可以被简单的 explicit operator bool() const; 根据答案§4 [conv] p3的标准报价: 一个expression式e可以被隐含地转换为一个typesT当且仅当声明T t=e; 对于一些发明的临时variablest (§8.5)来说,是格式良好的。 某些语言结构要求将expression式转换为布尔值。 出现在这样的语境中的expression式e据说被上下文转换为bool , 并且当且仅当声明bool t(e); 对于一些发明的临时variablest(§8.5)来说, 是格式良好的 。 突出显示的部分清楚地显示了“隐式显式强制转换”(在标准中称为“上下文转换”)为@R。 马蒂尼说的。 需要“隐式显式投射”的“某些语言结构”似乎是: if , while ,( §6.4 [stmt.select] p4 ) 二进制逻辑运算符&&和|| ( §5.14 [expr.log.and/or] p1 ) 逻辑否定运算符! ( §5.3.1 [expr.unary.op] p9 ) 条件运算符?: §5.14 [expr.cond] p1 ) static_assert ( §7 […]
在这个线程 (大约一年前发布)中,讨论了在非交互式会话中运行Word的问题。 这个(相当强)的build议是不这样做的。 在其中的一篇文章中提到:“Office API都假设你在桌面上的交互式会话中运行Office,具有显示器,键盘和鼠标,最重要的是一个消息泵。 我不确定那是什么 (我已经用C#编写了大约一年;我的其他编程经验主要用于ColdFusion。) 更新: 我的程序通过大量的RTF文件运行,以提取用于构build医疗报告编号的两条信息。 我没有试图弄清楚RTF中的格式化指令是如何工作的,而是决定在Word中打开它们,并从那里拉出文本(而不是真的启动GUI)。 偶尔,程序在处理一个文件的过程中被打断,并且留下了一个附加在该文件上的Word线程(我仍然需要弄清楚如何closures这个文件)。 当我重新运行程序时,当然我得到了一个使用该文件的线程的通知,并且我想打开一个只读副本? 当我说“是”时,Word GUI突然从无处popup,开始处理文件。 我想知道为什么发生这种情况。 但它看起来像也许一旦对话框popup消息泵开始推动主要的graphics用户界面到Windows?
我使用entity framework(EF)超时使用function导入,需要超过30秒才能完成。 我尝试了以下,并没有能够解决这个问题: 按照此处的build议,将EDMX文件的项目中的App.Config文件中的连接string添加为Default Command Timeout=300000 。 这是我的连接string看起来像: <add name="MyEntityConnectionString" connectionString="metadata=res://*/MyEntities.csdl|res://*/MyEntities.ssdl| res://*/MyEntities.msl; provider=System.Data.SqlClient;provider connection string=" Data Source=trekdevbox;Initial Catalog=StarTrekDatabase; Persist Security Info=True;User ID=JamesTKirk;Password=IsFriendsWithSpock; MultipleActiveResultSets=True;Default Command Timeout=300000;"" providerName="System.Data.EntityClient" /> 我试图直接在我的仓库中设置CommandTimeout,如下所示: private TrekEntities context = new TrekEntities(); public IEnumerable<TrekMatches> GetKirksFriends() { this.context.CommandTimeout = 180; return this.context.GetKirksFriends(); } 我还有什么可以让EF从超时? 这只发生在非常大的数据集上。 一切工作正常小数据集。 这是我得到的错误之一: System.Data.EntityCommandExecutionException:执行命令定义时发生错误。 详情请参阅内部例外。 —> System.Data.SqlClient.SqlException:超时过期。 操作完成之前超时的时间或服务器没有响应。 好的 – […]
如果我有一个对的向量: std::vector<std::pair<int, int> > vec; 有没有简单的方法来根据对的第二个元素升序排列列表? 我知道我可以写一个小的函数对象来完成这个工作,但是有没有办法使用STL和std::less现有部分来直接完成这个工作? 编辑:我明白,我可以编写一个单独的函数或类传递给第三个参数进行sorting。 问题是我是否可以用标准的东西来构build它。 我真的看起来像这样: std::sort(vec.begin(), vec.end(), std::something_magic<int, int, std::less>());
这个问题在过去的几个星期里已经有所发展,以涵盖xcode4的更多一般性问题(以及旧版xcode的升级项目)。 但是,许多问题可以通过遵循相同的指令来解决。 如果您遇到以下任何问题,请尝试接受的答案中的方法: Xcode 4无法存档应用程序 Xcode 4创build一个不可用的存档 Xcode 4不会创build一个.ipa 由于预处理器错误,Xcode 4无法编译 Xcode 4无法find标题 Xcode 4的代码完成不起作用 项目依赖不会编译 添加依赖会导致上述任何问题 原来的问题 标题: Xcode 4中的“词法或预处理器问题文件未find” 我有一个在Xcode 4中的项目,将build立罚款,并在设备和模拟器上运行,但是当试图存档错误时,查找与静态库相关的头文件: In file included from /Volumes/Development/Path/LBProject/LBProject/LBProject-Prefix.pch:15: In file included from /Volumes/Development/Path/LBProject/LBFDefines.h:23: In file included from /Volumes/Development/Path/LBProject/Classes/LBProjectAppDelegate.h:11: In file included from /Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDirectoryManager.h:10: /Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDataModel.h:11:9: fatal error: 'Merchant.h' file not found [1] #import "Merchant.h" ^ 1 […]
RegisterStartupScript和RegisterClientScriptBlock之间的唯一区别在于, RegisterStartupScript在closures页面的</form>标记之前放置了javascript,RegisterClientScriptBlock在页面的起始<form>标记后面放置了JavaScript。 另外,你什么时候select一个呢? 我写了一个快速样本页面,我有一个问题,我不知道为什么发生的确切原因。 这里是aspx标记: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="lblDisplayDate" runat="server" Text="Label" /><br /> <asp:Button ID="btnPostback" runat="server" Text="Register Startup Script" onclick="btnPostback_Click" /><br /> <asp:Button ID="btnPostBack2" runat="server" Text="Register" onclick="btnPostBack2_Click" /> </div> </form> </body> </html> 这里是代码隐藏: protected void Page_Load(object sender, EventArgs e) { lblDisplayDate.Text = DateTime.Now.ToString("T"); } protected void […]
我经常发现文件的标题部分一直变得越来越大,但是它永远不会变小。 在源文件的整个生命周期中,类可能已经被移动并被重构,并且很有可能有相当多的#includes不需要在那里。 将它们留在那里只会延长编译时间并增加不必要的编译依赖。 试图找出哪些仍然是需要的可能是非常乏味的。 是否有某种工具可以检测到多余的#include指令,并build议哪些可以安全删除? 皮棉可以做这个吗?