草庐IT

static-compilation

全部标签

c++ - 在将 void* 转换为任何内容时,我应该使用 static_cast 还是 reinterpret_cast

static_cast和reinterpret_cast似乎都可以很好地将void*转换为另一种指针类型。是否有充分的理由偏爱其中一个? 最佳答案 使用static_cast:它是准确描述此处进行的转换的最窄类型。有一种误解,认为使用reinterpret_cast会更好,因为这意味着“完全忽略类型安全,只是从A转换为B”。但是,这实际上并没有描述reinterpret_cast的效果。相反,reinterpret_cast有多种含义,所有含义都认为“reinterpret_cast执行的映射是实现定义的”。[5.2.10.3]但在

c++ - static 关键字及其在 C++ 中的各种用途

关键字static在C++中具有多种含义,我觉得这很令人困惑,我永远无法思考它实际上应该如何工作。据我了解,有static存储持续时间,这意味着它在全局的情况下会持续到程序的生命周期,但是当您谈论本地时,这意味着默认初始化为零。C++标准对带有关键字static的类数据成员这么说:3.7.1静态存储时长[basic.stc.static]3Thekeywordstaticcanbeusedtodeclarealocalvariablewithstaticstorageduration.4Thekeywordstaticappliedtoaclassdatamemberinaclassd

c++ - static_cast<> 和 C 风格转换有什么区别?

有什么理由更喜欢static_cast在C风格的类型转换?它们是等价的吗?有什么速度差异吗? 最佳答案 C++风格转换由编译器检查。C风格的强制转换不会也可能在运行时失败。此外,可以轻松搜索c++样式转换,而搜索c样式转换非常困难。另一个很大的好处是4种不同的C++风格转换更清楚地表达了程序员的意图。在编写C++时,我几乎总是使用C++而非C风格。 关于c++-static_cast和C风格转换有什么区别?,我们在StackOverflow上找到一个类似的问题:

c# - 如何在解决方案级别使用 Microsoft.Net.Compilers?

我想开始使用Microsoft.Net.Compilers简化我们的构建服务器的工作。但是,我只能让它在per-projectlevel上工作。,通过将包添加到所有项目。这是有问题的,因为必须将包添加到每个新创建的项目中。这可能会导致代码在开发人员的机器(具有最新的编译器)上编译,但在构建服务器上会失败。我们有很多项目(超过100个),所以这种情况比较常见。有没有办法在解决方案级别使用Microsoft.Net.Compilers?如果没有受支持的方式,是否有我不必在构建服务器上安装的命令行工具?或者,这不是这些工具的预期用途吗? 最佳答案

c - getopt.h : Compiling Linux C-Code in Windows

我正在尝试获取一组九个*.c文件(以及九个相关的*.h文件)以在Windows下编译。代码最初是在Linux中设计的,使用标准GNU-Linux/C库“getopt.h”获取命令行参数。而且该库不适用于在Windows中构建C代码。我想忽略我的代码现在所做的事情并提出以下问题。对于那些熟悉这个C库“getopt.h”的人:如果它依赖于POSIX样式的命令行参数,是否可以在Windows中构建和运行我的代码?或者我是否必须重新编写代码才能在Windows上工作,以不同的方式传递输入文件(并放弃“getopt.h”依赖项)? 最佳答案

Android gradle build 错误 :(9, 0) Gradle DSL 方法未找到 : 'compile()' .

我在尝试同步我的项目时遇到以下构建错误:Error:(9,0)GradleDSLmethodnotfound:'compile()'Possiblecauses:Theproject'AlexTest'maybeusingaversionofGradlethatdoesnotcontainthemethod.ThebuildfilemaybemissingaGradleplugin.link:ApplyGradleplugin我已经尝试在底部的那个链接中应用他们链接到我的每一个gradle插件,但同样的问题,所以我得出结论,第一个错误是原因。这是AlexTest的build.gradl

javascript - 定义指令时 'controller' 、 'link' 和 'compile' 函数之间的区别

有些地方似乎将Controller功能用于指令逻辑,而其他地方则使用链接。Angular主页上的选项卡示例将Controller用于一个指令,将链接用于另一个指令。两者有什么区别? 最佳答案 我将稍微扩展您的问题,并包括编译功能。编译函数-用于templateDOM操作(即tElement=模板元素的操作),因此操作适用于模板的所有DOM克隆与指令相关联。(如果您还需要链接函数(或前链接函数和后链接函数),并且定义了编译函数,编译函数必须返回链接函数,因为如果'link'属性为定义。)链接函数-通常用于注册监听器回调(即,'comp

c++ - 或无效 C++ : why does this code compile?

这是我用QtCreator制作的一个非常简单的C++应用程序:intmain(intargc,char*argv[]){inta=1;intb=2;if(a3){return1;}return0;}对我来说,这不是有效的C++,因为关键字or不是保留关键字。但是如果我编译并运行它,它可以正常工作,没有任何警告!退出代码为0,如果我更改b=4,退出代码为1!我没有包括任何东西来确保没有隐藏的定义。这对我来说真的很奇怪。这是Qt定义的东西吗?我在文档中没有找到任何相关内容。 最佳答案 根据Wikipedia:C++defineskeyw

c++ - 或无效 C++ : why does this code compile?

这是我用QtCreator制作的一个非常简单的C++应用程序:intmain(intargc,char*argv[]){inta=1;intb=2;if(a3){return1;}return0;}对我来说,这不是有效的C++,因为关键字or不是保留关键字。但是如果我编译并运行它,它可以正常工作,没有任何警告!退出代码为0,如果我更改b=4,退出代码为1!我没有包括任何东西来确保没有隐藏的定义。这对我来说真的很奇怪。这是Qt定义的东西吗?我在文档中没有找到任何相关内容。 最佳答案 根据Wikipedia:C++defineskeyw

java - 是否应该以大写形式声明 "static final Logger"?

在Java中,静态最终变量是常量,并且约定它们应该大写。但是,我看到大多数人以小写形式声明记录器,这在PMD中被视为违规。.例如:privatestaticfinalLoggerlogger=Logger.getLogger(MyClass.class);只需搜索google或SO对于“静态最终记录器”,您将自己看到。我们应该改用LOGGER吗? 最佳答案 记录器引用不是常量,而是最终引用,不应大写。常量VALUE应为大写。privatestaticfinalLoggerlogger=Logger.getLogger(MyClass