35得票6回答
传递/返回数组(而不是指针)的引用到/从函数的一般规则是什么?

我们可以像这样将数组的引用传递给函数:void f(int (&a)[5]); int x[5]; f(x); //okay int y[6]; f(y); //error - type of y is not `int (&)[5]`. 甚至更好的是,我们可...

35得票8回答
一个constexpr函数是否在编译时被评估的测试是否可能?

自从C++14的constexpr扩展版本(我想)被引入后,您可以声明可用作“真正”的constexpr的函数。也就是说,该代码在编译时执行,或者可以表现为内联函数。因此,我们可以有这个程序:#include <iostream> constexpr int foo(const ...

35得票4回答
使用static_cast而不是C风格强制类型转换对非指针类型有什么优势吗?

我很清楚使用static_cast而非C风格的指针类型转换的优势。 如果指针类型不兼容,则: static_cast将在源代码中的特定行产生编译时错误 C风格转换可能会在程序执行的“随机”点导致运行时错误 但是我找不到任何关于非指针类型的类似示例。 换句话说,对于非指针类型,两种转...

31得票17回答
检测字节序

我正试图创建一份能够在目标系统的字节序不同情况下正确处理I/O操作的C源代码。 我选择了“小端序”作为我的I/O惯例,这意味着对于大端CPU,我需要在写入或读取数据时进行转换。 转换并不是问题所在。我面临的问题是检测字节序,最好是在编译时检测(因为CPU在执行过程中不会更改字节序...)。...

29得票6回答
如何在Delphi中获取当前过程/函数的名称(作为字符串)

可以在过程/函数内部获取当前过程/函数的名称作为字符串吗?我想可能有一些在编译时展开的“宏”。 我的情况是这样的:我有很多个过程,都需要给定一个记录并检查其有效性,因此它们将记录传递给“验证程序”。 验证程序(对于所有过程来说是相同的)如果记录无效会引发异常,并且我希望异常消息中包含调用验证...

26得票4回答
在C++中编译时计算和打印阶乘

template<unsigned int n> struct Factorial { enum { value = n * Factorial<n-1>::value}; }; template<> struct Factorial<0&g...

26得票5回答
如果显式给定多维数组,为什么不能使用 char[][] = {{...}, {...}}?

我阅读了这篇文章。我理解了其中解释的规则,但我想知道当定义一个常量多维数组并直接使用给定类型的已知值进行初始化时,编译器究竟阻止了哪些语法:const int multi_arr1[][] = {{1,2,3}, {1,2,3}}; // why not? const int multi_ar...

26得票5回答
基于模板参数的条件编译时代码的包含/排除?

考虑以下类,其中内部结构体 Y 作为类型被使用,例如在后续的模板中:template<int I> class X{ template<class T1> struct Y{}; template<class T1, class T2> s...

25得票5回答
在C#中,我可以从编译时环境变量创建一个常量吗?

我们使用 Hudson 构建项目,并且 Hudson 会在编译时方便地定义环境变量,例如 %BUILD_NUMBER%。 我想在代码中使用该变量,以便在运行时记录此构建的信息等操作。然而,我不能使用 System.Environment.GetEnvironmentVariable,因为那会...

25得票5回答
什么是编译时多态性,为什么它只适用于函数?

什么是编译时多态性,为什么它只适用于函数?