繁体   English   中英

使用gcc编译C代码而不安装mingW / cygwin

[英]Compile c code using gcc without installing mingW/cygwin

我的系统中安装了Visual Studio。 因此设置了其相应的编译器和环境变量。 当我尝试使用cl命令编译c文件时,它工作正常。 现在,我从另一个系统压缩了mingW并将其提取到我的系统中。 说我在D:/ mingW中有它。 现在,我创建了一个用于编译c文件的批处理文件。 批处理文件的内容是,

set gccPath=D:/mingW/bin
%gccPath%/gcc.exe -c -std=c99 -o myC.o ../myC.c -I..\.

当我运行此批处理文件时,它会产生一些错误。 这样的错误之一是

stdio.h:209:71: error: macro "snprintf" requires 5 arguments, but only 4 given

上述错误可能是由于编译器采用了Visual Studio的stdio.h而不是mingW的默认头文件。 另一个错误是

error: previous declaration of 'xxxxFun' was here

我应该在批处理脚本中更改哪些内容,以便使用mingW完全编译c文件。 当我们使用Visual Studio时,编译过程成功完成,但如果对同一组文件使用gcc,则会引发错误

编辑:我修复了后一个错误。 当首先包含stdio.h时,也不会发生第一个错误。 但是,如果我们在包含部分的中间包含stdio.h,则会出现错误。

#include <string.h>
#include <assert.h>
#include <minmax.h>

#include "myFunctions.h"
#include "MyModule.h"
#include <stdio.h>

如图所示,当我们终于有了stdio.h时,错误就来了。 如果将行#include <stdio.h>移到#include <MyModule.h>以上的任何其他行,则指定的错误不会出现。 这种奇怪行为背后的原因是什么?

检查是否在任何头文件中使用宏定义了snprintf 由于错误/不必要的宏,可能导致此错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM