Un saluto a tutti

Ecco una parte del mio codice:

codice:
void WriteToPipe(pipe_t &Child_IN_Wr, char nome_cognome[NAMESIZE], int num)           //Gli passo nome come parametro 

// Write to the pipe for the child's STDIN. 
{ 
  #ifdef WIN32
   DWORD dwRead, dwWritten;
   BOOL bSuccess = FALSE;
   int length;
   if (num=1)
        {
        char tmp1[] = "cd VocaleConsole\ncd Exe\ncd Profiles\ncd ";
        char tmp2[] = "\ncd Model\ndos2unix *.*\n./HTK_Compile_Model.sh \n";
        }
   else
       {
       char tmp1[]="cd VocaleConsole\ncd Exe\ncd Profiles\ncd ";
       char tmp2[]="\ncd test\nHCopy -A -D -T 1 -C wav_config -S codetrain.scp\njulian -input rawfile -filelist wavlst -smpFreq 48000  -C julian.jconf  > juliusOutput\n./ProcessJuliusOutput.pl juliusOutput juliusProcessed\nHResults -I testref.mlf tiedlist juliusProcessed";
       }

   length = sizeof(tmp1)+sizeof(tmp2)+sizeof(nome_cognome);
   char *chBuf=(char *) malloc(length);
   
   strcpy (chBuf,tmp1);
   strcat (chBuf,nome_cognome);
   strcat (chBuf, tmp2);
   
        
   bSuccess = WriteFile(Child_IN_Wr, chBuf,length, &dwWritten, NULL);
// Close the pipe handle so the child process stops reading. 
 
   if ( ! CloseHandle(Child_IN_Wr) ){
       cout<<"error: Close handle\n"; 
      return; 
      } 
   #endif
}
Quando lo compilo mi dice che l array tmp1 e tmp2 non sono dichiarati.
Come mai?! Dove sbaglio?!
Un saluto