用Visual Studio c++编译器编译C代码有任何(与性能相关的)缺点吗?
Is there any (performance-related) downside to compiling C code with the Visual Studio C++ compiler?
这是我第一次使用Visual Studio(2010)开发,我注意到:
int *x = malloc(sizeof(int) * 50);
当我试图构建"main.c"时,给出一个错误。我猜想这是因为VS使用c++编译器来构建C程序。
由VS为C生成的代码是否与Windows下的代码一样好,或者我应该寻找更好的和/或专属于C的代码?
我认为这是因为VS正在使用c++编译器来构建C程序。
你的假设是不正确的:那行代码没有任何问题,事实上Visual c++将编译它没有错误:
c:dev>type stubby.c
#include <stdlib.h>
int main(void)
{
int *x = malloc(sizeof(int) * 50);
}
c:dev>cl stubby.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
stubby.c
Microsoft (R) Incremental Linker Version 10.00.40219.01
Copyright (C) Microsoft Corporation. All rights reserved.
/out:stubby.exe
stubby.obj
c:dev>
Visual c++是否适合你的需求取决于你的需求是什么。它不支持C99;如果对C99的支持对您很重要,那么您将需要寻找另一个编译器。它不支持过多的GNU语言扩展;如果这些对您很重要,您将需要寻找另一个编译器。
-
这与性能无关;这是一种语言限制。在c++中,需要强制转换:
int *x = (int*)malloc(sizeof(int) * 50);
-
除了Visual c++编译器,还有其他的Windows编译器;例如,看看g++ (MinGW GCC的一部分)。
-
一般来说,C编译器比c++编译器能更好地进行优化。但我不认为在c++模式下使用相同的编译器比在C模式下运行它有任何区别,至少不是典型的。
我不使用Visual Studio编译器纯粹是因为它不兼容C99,我发现C99更容易工作。
我个人使用MinGW + GCC代替,但我使用notepad++代替Visual Studio。我知道使用GCC编译Visual Studio是绝对可能的,但我还不知道有人这样做过。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- OpenMP阵列性能较差
- 递归列出所有目录中的C++与Python与Ruby的性能
- 大小相等但成员数量不同的结构之间的性能差异
- 为什么constexpr的性能比正常表达式差
- 在类中使用随机生成器时出现性能问题
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 使用rdtsc进行基准测试的缺点是什么
- 海湾合作委员会 ARM 性能下降
- GCC 和 Clang 代码性能的巨大差异
- 在容量内调整矢量大小时的性能影响
- 了解算法的性能差异(如果以不同的编程语言实现)
- 未达到的情况会影响开关外壳性能
- QStringList vs list<shared_ptr<QString>> 性能比较C++
- 是否总是可以将使用递归编写的程序重写为不使用递归的程序C++,性能观点是什么?
- 哪种方法更好,性能明智
- 函数局部静态变量:从性能角度来看的优点/缺点
- VM解释器-更大指令集/调度循环的加权性能优点和缺点
- C++ 模板:模板是否内联?性能有缺点吗?
- 用Visual Studio c++编译器编译C代码有任何(与性能相关的)缺点吗?