preprocessorFilename = (char *) malloc( strlen( argv[optind] ) + 3 );
        strcpy( preprocessorFilename, argv[optind] );
        strcat( preprocessorFilename, "_p" );

        /* Call the preprocessor. It will store its result in
         * preprocessorFilename. If the preprocessor could not
         * open the input file, skip this file.
         * 建立一个新文件,文件名为原来的.i文件加上.p,如果输入的
            文件名是while.i,则生成的经过预处理的文件名为while.i_p,
            这里说的预处理和c语言是一样的,即将相应的头文件拷贝过来,
            如#import "printint.ih",则将#import "printint.ih"替换为
            printint.ih文件的内容
         */
        result = Preprocess( argv[optind], preprocessorFilename );