我看到一个C程序,其代码如下: static void *arr[1] = {&& varOne,&& varTwo,&& varThree}; varOne: printf("One") ; varTwo: printf("Two") ; varThree: printf("Three") ; 我对“ &&操作感到困惑,因为左边没有任何内容。 它默认评估为空吗? 或者这是一个特例? 编辑:添加一些更多的信息,使问题/代码更清晰的我的问题。 谢谢大家的帮助。 这是gcc特定扩展的一个例子。
我已经有几次有GHC告诉我使用扩展的经验,只是发现,当使用扩展时,我已经使代码更加复杂,当一个简单的重构允许我坚持使用Haskell 98(现在2010 ),并有一个更直接的解决scheme。 另一方面,有些时候GADT或Rank2Types(很lessRankNTypes)使得代码less得多,代码更简洁。 哪种扩展通常会掩盖更好的devise的可能性,并且通常会改进它? 如果有两者兼而有之,那么在决定使用该扩展之前,用户应该寻找什么(确定他们打算的解决scheme是真是假)? (另请参阅我应该使用GHC Haskell扩展吗? )
我刚刚做了一些Haskell开发,我重新编译了GHC新版本中的一些旧代码: The Glorious Glasgow Haskell Compilation System, version 7.2.1 当我做了我收到以下错误: 警告:-XDatatypeContexts已被弃用:它被广泛认为是错误的,并且已经从Haskell语言中删除。 当您使用以下格式的代码时会出现: data Ord a => MyType a = ConstructorOne a = ConstructorTwo aa 我的问题是:为什么这个function首先被弃用,我应该做什么,而不是实现相同或相似的function?
我遇到了这个奇怪的C ++程序。 #include <iostream> using namespace std; int main() { int a = ({int x; cin >> x; x;}); cout << a; } 任何人都可以解释发生了什么事? 这个结构叫做什么?
我试图在GHCi中启用XRankNTypes 。 我该怎么做呢?
我刚刚在C ++ 0x中发现了这个旧的C ++ 0x草案 。 这个想法是通过编写只有.cpp文件才能离开当前的.h / .cpp系统,然后在编译过程中生成模块文件,然后再由其他.cpp文件使用。 这看起来像一个非常棒的function。 但我的问题是:为什么他们从C ++ 0x中删除它? 是因为技术上的困难太多了吗? 时间不够? 你觉得他们会考虑为它做一个更加版本的C ++吗?