compiler-construction相关内容

可以使用静态链接使用库构建共享库吗?

我可以使用带有静态链接的 gcc 构建可执行文件: gcc -static xxx.c -o xxx 所以我可以在没有任何外部依赖库的情况下运行 xxx. 但是如果我想构建没有外部依赖库的共享库怎么办?我的意思是我想要共享库静态链接其外部引用. 解决方案 这将起作用: # 生成与位置无关的代码(PIC)gcc -fPIC -c -o xxx.o xxx.c# 构建共享对 ..
发布时间:2022-01-17 08:49:23 服务器开发

__FILE__ 、 __LINE__ 和 __PRETTY_FUNCTION__ 的 Visual C++ 等效项

GCC 编译器为我提供了以下宏: __FILE__ 这样我就可以打印出文件名+目录了. __LINE__ 这样我就可以打印出我正在打印的行号. __PRETTY_FUNCTION__ 这样我就可以打印出漂亮的函数名了 Visual C++ 是否有这些宏的等价物?附带的问题是,这些是 C++ 编译器的标准吗? 解决方案 在VS2008中: 结构 A{布尔测试(int iDu ..
发布时间:2022-01-17 08:49:17 C/C++开发

为什么编译器至少对此 == null 不发出警告

为什么 C# 编译器甚至不抱怨这段代码的警告?: if (this == null){//...} 显然条件将永远得到满足.. 解决方案 因为你可以覆盖 operator == 以针对这种情况返回 true. 公共类 Foo{公共无效测试(){Console.WriteLine(this == null);}公共静态布尔运算符 ==(Foo a, Foo b){返回真;}公共静态布尔 ..
发布时间:2022-01-17 08:49:08 C#/.NET

如何获取 printf 风格的编译时警告或错误

我想编写一个类似 printf 的例程,但不是在功能方面,而是我希望该例程与 printf 具有相同的编译检查特性. 例如,如果我有: {诠释我;std::string s;printf("%d %d",i);printf("%d",s.c_str());} 编译器会这样抱怨: 1 cc1plus:警告被视为错误2 在函数“int main()"中:3 第 8 行:警告:格式参数太少4 ..
发布时间:2022-01-17 08:48:38 C/C++开发

为什么堆栈上分配了这么多空间?

这个问题来自回答堆栈溢出问题为什么书上说“编译器为内存中的变量分配空间"?,我试图向 OP 演示在堆栈上分配变量时会发生什么,以及编译器如何生成知道要分配的内存大小的代码.显然编译器分配的空间比需要的多. 但是,在编译以下内容时 #include 使用命名空间标准;主函数(){整数富;返回0;} 在调试模式下编译 Visual C++ 2012 后,您将获得以下汇编器 ..
发布时间:2022-01-17 08:48:14 C/C++开发

为从 Coffeescript 编译的多个连接的 javascript 文件生成源映射

有人在这方面取得过成功吗? 解决方案 我认为这或多或少是一个未解决的问题:https://github.com/jashkenas/coffee-script/issues/2779 .最后一个有意义的评论来自一个月前的 jwalton. 不过,增加对它的支持似乎不是火箭科学,所以它可能很快就会到来. Michael Ficarra(CoffeeScript Redux 的创建 ..

VC++ cl.exe -- 找不到 DLL

我将 VS2010(不是 SP1)C++ 编译器的 bin 目录添加到我在 Windows XP 上的 PATH 变量中.当我尝试运行它时,它告诉我找不到 DLL.我将此行添加到我的 PATH: C:\Program Files\Microsoft Visual Studio 10.0\VC\bin; 更新:我cd到上面的bin目录,然后运行编译器还是失败 你能帮帮我吗? 解决方案 ..

支持 C11 的编译器

我想知道是否有任何编译器支持相当多的新 C11 标准.寻找通用选择等功能. 有什么建议吗? 解决方案 Pelles C 7.00 版(Release Candidate 现已推出) http://www.smorgasbordet.com/pellesc/ ..
发布时间:2022-01-17 08:47:35 其他开发

标准的 Sun javac 可以进行增量编译吗?

最近我开始使用 Eclipse 的 java 编译器,因为它比标准的 javac 快得多.有人告诉我它更快,因为它执行增量编译.但我仍然对此有点不确定,因为我找不到任何关于这两者的权威文档 - eclispse 和 sun 的 - 编译器“增量功能".是不是 Sun 的编译器总是编译每个源文件,而 Eclipse 的编译器只编译已更改的文件以及受此类更改影响的文件? 编辑:我没有使用 Ecl ..

是否可以将 Closure Compiler ADVANCED_OPTIMIZATIONS 与 jQuery 一起使用?

我不断收到给定对象的函数(重命名)不存在的错误.是否有版本或设置或其他东西可以使它工作? 解决方案 你必须 将 jQuery 声明为编译器的外部...但是我不确定是否有人做过,有一个 1.3.2 的 extern 文件,但我没有没有看到任何 1.4+ 版本. 编辑: 这个问题线程这里有社区建1.4版本. ..

没有“编译语言"之类的东西.或“解释语言"

“没有所谓的“编译语言"或“解释语言".语言实现者选择编写编译器、解释器还是两者之间的任何东西都是实现细节,与语言无关." 以上说法属实吗? 解决方案 是的,严格的解释是正确的.您可以找到 C++ 解释器 和 Javascript 编译器,例如.但是,您会发现某些类型的语言(例如静态类型)非常适合本机代码编译.其他语言(例如动态类型)通常使用字节码编译结合虚拟机执行环境来实现. ..

来自数组 0 初始化的奇怪程序集

受问题的启发 初始化和归零数组的区别在 c/c++ ? 中,我决定实际检查 Windows Mobile Professional(ARM 处理器,来自 Microsoft Optimizing Compiler)的优化版本构建的程序集.我的发现有点令人惊讶,我想知道是否有人可以解释我的问题. 检查这两个示例: 字节 a[10] = { 0 };字节 b[10];memset(b, 0, ..
发布时间:2022-01-17 08:46:49 C/C++开发

gcc 4.3.3 编译器选项默认启用

我已经从 gcc 版本 4.0.3 移动到 4.3.3 并意识到 -mfpmath 在 gcc 4.3.3 中默认设置为 sse.这实际上导致了我的应用程序中的错误.在 4.0.3 中,-mfpmath 为 387. 我想知道如何获得 gcc 为给定版本启用的所有默认选项.如何在编译时转储 gcc 使用的所有选项集.这使我能够比较 4.0.3 和 4.3.3 版本. 一般来说,如果我能 ..
发布时间:2022-01-17 08:46:33 C/C++开发

是否有用于模板使用的优化 C++ 编译器?

C++ 模板因其强大的功能而成为我日常工作中的福音.但是不能忽略大量使用模板(hello 元编程和 Boost 库)导致的(非常非常非常长的)编译时间.我已经阅读并尝试了很多手动重组和修改模板代码以使其尽快编译的可能性. 现在我想知道是否有任何 c++ 编译器尝试最小化解释模板类所需的时间.我可能错了,但我觉得我所知道的编译器只是在他们以前的版本中添加了模板解释. 我的问题是: ..
发布时间:2022-01-17 08:46:24 C/C++开发

OCaml 内部结构:异常

我很想知道 OCaml 运行时如何处理异常以使它们变得如此轻量级.他们是使用 setjmp/longjmp 还是在每个函数中返回一个特殊值并传播它? 在我看来 longjmp 会给系统带来一点压力,但只有在引发异常时,同时检查每个函数返回值需要在调用函数后检查每个值,这似乎我会进行很多检查和跳转,似乎它会表现最差. 通过查看 OCaml 如何与 C 交互(http://caml.inr ..
发布时间:2022-01-17 08:46:17 其他开发

Delphi:如何组织源代码以提高编译器性能?

我正在开发一个包含大量依赖项的大型 delphi 6 项目.编译整个项目需要几分钟.一些更改后的重新编译有时会更长,因此可以更快地终止 Delphi,擦除所有 dcu 文件并重新编译所有内容. 有没有人知道一种方法来识别,是什么让编译器越来越慢?关于如何组织代码以提高编译器性能的任何提示? 我已经尝试过以下事情: 在 dpr 中明确包含大部分单元,而不是依赖搜索路径:它没有任何改 ..
发布时间:2022-01-17 08:46:03 其他开发

使用 Go 反编译已编译的程序

我用 Go 构建了一个简单的可执行程序. 我已将代码编译成静态二进制程序. 我想反编译输出的二进制文件,得到Go源码. 这可能吗? 解决方案 没有工具可以做到这一点,并且由于 Go 程序被编译成机器代码,它们不包含足够的信息来将它们转换回 Go 代码.不过,标准的拆卸技术仍然可行. ..
发布时间:2022-01-17 08:45:47 其他开发