Articles of gcc

在windows下运行linux gcc编译的程序

好吧,伙计们,希望这是一个相当简单的问题:有什么办法可以在windows操作系统下运行一个用gcc编译的C程序吗? 请不要告诉我在Windows下重新编译它,因为我已经尝试,但看起来没有Windows编译器有128位本机types,并使用bignum库使我的程序慢10到100倍。 有没有什么办法可以在Windows下运行linux二进制文件? 有人告诉我关于cygwin的一些事情,但我不知道从哪里开始。 (我的程序也应该是可移植的,所以我不需要在我的机器上安装程序和东西)。 非常感谢你!! 马特奥

在Windows 64位上安装cx_Oracle时,命令“gcc”失败,退出状态为1

我试图在我的Windows 7 – 64位版本上安装cx_Oracle 。 我以前有一个关于在Windows上安装cx_Oracle的问题,我自己解决了这个问题; 但它是Windows 7的32位版本; 在这里我遇到了安装它的新问题。 我应该提到,我部署了64位版本的MinGW和Microsoft Visual Studio 2008 。 对于我得到command 'gcc' failed with exit status 1 。 我尝试了Microsoft Visual Studio 2008控制台中的easy_install cx_Oracle ,并得到了这个输出(这正是我从Windows默认命令行运行命令时所得到的): Setting environment for using Microsoft Visual Studio 2008 x86 tools. C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>easy_install cx_Oracle Searching for cx-Oracle Reading http://pypi.python.org/simple/cx_Oracle/ Reading http://cx-oracle.sourceforge.net Reading http://starship.python.net/crew/atuining Best […]

警告C4996:与POSIX上的GCC相比,此function或variables可能不安全

我注意到,MS编译器为getenv等cstdlib函数提供了“不推荐使用”的警告。 MS发明了自己的标准,如_dupenv_s 。 问题1 AFAIK主要的“不安全”是关于重入*。 由于MS的CRT被标记为“multithreading”( /MT ),为什么他们不能用可重入的线程安全版本代替getenv呢? 难道有人会依赖不安全的行为吗? 问题2 我用GCC编译了相同的代码g++ -Wall -Wextra -Weff++ -pedantic foo.cpp ,它不会产生任何警告。 所以我猜这在POSIX上不是问题? 这是如何解决的? (好吧,也许他们只是改变了getenv的行为,很高兴有这个证实)。 * 这是一个过于笼统的说“它只是重入。 当然,我们有像strncpy_s这样的完全改变签名和处理缓冲区大小的东西。 但是不改变这个问题的核心

为什么malloc在gcc中将值初始化为0?

也许它是从平台到平台不同,但是 当我使用gcc编译并运行下面的代码时,我每次在我的Ubuntu 11.10中都得到0。 #include <stdio.h> #include <stdlib.h> int main() { double *a = (double*) malloc(sizeof(double)*100) printf("%f", *a); } 为什么即使有calloc,malloc的行为也是如此? 这是否意味着即使您不希望有时将值初始化为0,也会产生不必要的性能开销? 编辑:哦,我以前的例子不是开始,但恰巧使用“新鲜”块。 我正在寻找的是为什么它分配一个大块时初始化它: int main() { int *a = (int*) malloc(sizeof(int)*200000); a[10] = 3; printf("%d", *(a+10)); free(a); a = (double*) malloc(sizeof(double)*200000); printf("%d", *(a+10)); } OUTPUT: 3 0 (initialized) 但是,谢谢指出,当mallocing有一个安全的原因! (从来没有想过)。 当分配新块或大块时,必须将其初始化为零。