2011-07-18 2 views
-1

이것은 원본입니다.argc와 argv를 사용하여 sprintf의 모든 인수를 ivlpp_main에 전달하려고합니다. 코드가 같은 효과를 가졌습니까?

정적 무효 build_preprocess_command (INT의 e_flag는)

{

ivlpp_main(argc, argv); 

snprintf(tmp, sizeof tmp, "%s%civlpp %s%s -F\"%s\" -f\"%s\" -p\"%s\" ", 
     pbase, sep, verbose_flag?" -v":"", 
     e_flag?"":" -L", defines_path, source_path, 
     compiled_defines_path); 

}

이 내 코드

정적 무효 build_preprocess_command_and_run (INT의 e_flag) {

문자입니다 ** myargv ;

int argc, arg;

myargc = 7;

myargv = new char (myargc);

arg = 0;

myargv [arg] = 새로운 char (strlen (pbase) + strlen ("ivlpp") + strlen (sep) + 2);

 sprintf(argv[arg], strlen(pbase) + 2,"s%s%ccivlpp", pbase, sep); 

myargv [ARG ++ = 새 문자 (나 strlen (defines_path) + strlen 함수 ("- F \"% S \ ''));

myargv [arg ++] = 새 char (strlen (definitions_path) + strlen ("-f \"% s \ "")));

myargv [arg ++] = 새 char (strlen (definitions_path) + strlen ("-f \"% s \ "")));

myargv [arg ++] = new char (strlen ("- p \"% s \ "")));

myargv [arg ++] = new char (strlen ("- v"));

myargv [arg ++] = new char (strlen ("- L"));

경우 (verbose_flag는) {

//argv[arg++] = "-v"; 

sprintf("-v"); 

}

경우 (! e_flag) {

//argv[arg++] = "-L"; 

sprintf("-L"); 

}

현재 snprintf ("-F \"% s \ "에 ", definitions_path);

snprintf ("-f \"% s \ "", source_path);

snprintf ("-f \"% s \ "", compiled_defines_path);

ivlpp_main (argc, argv);

}

+0

이것은 Qt와는 아무런 관련이 없습니다. –

답변

0

아니요. 첫 번째 코드가 잘못되었습니다. 두 번째 컴파일되지 않습니다. sprintf에는 사용중인 단일 인수보다 많은 인수가 있습니다. 내 코드 on your last question 작품 (이것은 중복과 같습니다).

관련 문제