[英]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.