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 );