小乌龟

在梦想的道路上还能走多远

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::

   用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)编译含有*命令行参数的程序,务必小心.
posted on 2008-09-06 11:42 小乌龟 阅读(706) 评论(0)  编辑 收藏 引用 所属分类: C&C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理