如何使用当前的Xcode/Mac OS X v10.8(Mountain Lion)或更高版本安装命令行构建工具?
与Xcode不同,没有安装程序(它只是一个包).
看起来所有命令行工具都在那里(在bundle中,在Contents/Developer下),但没有一个适当的环境变量设置为使用它们.
是否有一个我可以运行的脚本,它将设置我的环境以支持从命令行构建?
有谁知道是否可以在.NET中定义"java自定义类加载器"的等价物?
给一点背景:
我正在开发一种针对CLR的新编程语言,称为"Liberty".该语言的一个特性是它能够定义"类型构造函数",它是编译器在编译时执行并生成类型作为输出的方法.它们是泛型的泛化(该语言确实具有普通泛型),并允许编写这样的代码(使用"Liberty"语法):
var t as tuple<i as int, j as int, k as int>;
t.i = 2;
t.j = 4;
t.k = 5;
Run Code Online (Sandbox Code Playgroud)
"tuple"的定义如下:
public type tuple(params variables as VariableDeclaration[]) as TypeDeclaration
{
//...
}
Run Code Online (Sandbox Code Playgroud)
在这个特定的例子中,类型构造函数tuple
提供类似于VB和C#中的匿名类型.
但是,与匿名类型不同,"元组"具有名称,可以在公共方法签名中使用.
这意味着我需要一种方法,最终由编译器发出的类型可以跨多个程序集共享.例如,我想要
tuple<x as int>
在程序集A中定义的最终类型与tuple<x as int>
程序集B中定义的类型相同.
当然,问题是程序集A和程序集B将在不同的时间进行编译,这意味着它们最终都会发出自己不兼容的元组类型版本.
我考虑使用某种"类型擦除"来做这个,所以我会有一个像这样的一堆类型的共享库(这是"Liberty"语法):
class tuple<T>
{
public Field1 as T;
}
class tuple<T, R>
{
public Field2 as T;
public Field2 as R;
}
Run Code Online (Sandbox Code Playgroud)
然后只重定向来自第i,j和k元组字段来访问Field1
,Field2
和Field3
.
然而,这不是一个真正可行的选择.这意味着,在编译时 …
.net compiler-construction clr language-features programming-languages
是否存在JIT编译器比其他编译器(如C++)更快的情况?
您认为将来JIT编译器只会看到次要的优化,功能但是会遵循类似的性能,还是会有突破性的优势使其无限优于其他编译器?
看起来多核心范式有一些希望,但它不是普遍的魔力.
任何见解?
有没有人知道Win32在处理不区分大小写的文件名时使用的文化设置?
这是根据用户的文化而变化的,还是Win32使用文化不变的大小写规则?
有谁知道如何使用C#本地化日期范围?
特别是,我想生成"智能"日期范围,以便消除冗余信息.
以下是美国英语中的一些示例
形成我可以告诉.NET Framework支持本地化日期,但不支持日期范围.
使用支持System.Globalization.DateTimeFormatInfo
的Windows语言环境中的信息CultureInfo
,我能够(大部分时间)弄清楚如何执行项目#1和#2.第2项就是DateTime.ToString(DateTimeFormatInfo.YearMonthFormat)
.使用YearMonthFormat
I还能够推断出大多数语言用于#1的格式.对于少数我不能,我只是重复一年.
不幸的是,我无法弄清楚如何使用.NET Framework执行#3-#5项.Outlook格式使用这些格式进行格式化,所以我希望可能有一些Win32 API会这样做,但Google搜索"Win32 Date Range本地化"没有任何用处.
我喜欢"智能范围格式化"提供的增强的可用性,我希望没有使用英文版Windows的客户获得相同的好处.
有没有人知道如何以文化依赖的方式做到这一点?
我有关于EXCEPTION_INT_OVERFLOW和EXCEPTION_INT_DIVIDE_BY_ZERO异常的问题.
Windows将捕获由IDIV指令生成的#DE错误,并最终使用这两个代码之一生成SEH异常.
我的问题是它如何区分这两个条件?英特尔手册中有关idiv的信息表明它将在"除以零"和"下溢情况"中生成#DE.
我快速浏览了intel手册第3卷中#DE错误的部分,我能收集的最好的是操作系统必须解码DIV指令,加载除数参数,然后将其与零进行比较.
这对我来说似乎有点疯狂.为什么芯片设计者不会使用某种标志来区分错误的两个原因?我觉得我必须遗漏一些东西.
有谁知道操作系统如何区分两种不同的故障原因?
Visual C++中"volatile"的MSDN文档表明,写入具有"释放语义",并且读取具有"获取语义",此外还确保读取始终从内存中读取,并且写入总是相应地写入.
"volatile"的C规范包括第二部分(不做疯狂的优化),但不包括第一部分(内存栅栏).
在没有内存栅栏的情况下,Visual C++中是否有任何方法只能获得"C"易变行为?
我想强制一个变量始终在堆栈上,在一个固定的位置,但我不想在每次赋值时占用内存栅栏的开销.
有没有简单的方法来使用Visual C++源代码?
通过检查mscorlib中的符号,看起来C#编译器中嵌入了一些逻辑来检测Silverlight的存在.检测到mscorlib的Silverlight版本时,它不会在它生成的任何委托类型上发出BeginInvoke和EndInvoke成员.
这是有道理的,因为这些方法不支持silverlight.
有谁知道它用于触发该决定的类型/成员(特别是在委托案例中)?