C-Free对程序命令行参数*的处理

C-Free对程序命令行参数*的处理

   用C-Free(使用默认的mingw编译器)编译一个程序的时候,出现了一个古怪的现象.MS如果一个程序有命令行参数且命令行参数中含有*,则编译器就会将*替换为本目录下的所有文件名,而用VC++6.0则不会出现以上的情况.

   测试了一番,的确如此.程序代码如下:
/*  包含头文件  */  
#include 
< stdio.h >

main(
int  argc,  char   * argv[])
{
    
while  (argc --   >   0 )
    {    
        printf(
" %s\n " * argv ++ );
    }
    
return   0 ;
}
   用C-Free4.0(使用默认的mingw编译器)编译成expr.exe.然后将其放置于一个文件夹下,此时文件夹里含有两个文件:expr.exe和expr.txt.从命令行执行: expr.exe *,结果显示:
   expr.exe
   expr.exe
   expr.txt

   用VC++6.0编译成expr2.exe,然后将它移到此文件夹下,执行同样的命令: expr.exe *,结果如下:
   expr2.exe
   * 

   如果*不是作为一个单独的参数,而是作为一个参数的一部分,情况会怎样,执行命令:expr.exe 1*2,结果如下:
   expr.exe
   1*2
   因此,在使用C-Free(默认编译器mingw)编译含有*命令行参数的程序,务必小心.

你可能感兴趣的:(C-Free对程序命令行参数*的处理)