Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C++] Assert personalizzato

    Poichè non sono soddisfatto del comportamento di assert, me ne sono scritto uno io ma ho qualche problema...
    codice:
    #define ASSERT(expression) \
    		  if (!(expression)){ \
    			string __ASSERT_ERROR_TEXT__ = ""; \
    			char * __ASSERT_LINE_ERROR__; itoa(__LINE__,__ASSERT_LINE_ERROR__,10); \
    			__ASSERT_ERROR_TEXT__ += (string)"ASSERT has failed the follow assertion:\n " + \
    		   #expression + "\n\nIn file: " + __FILE__ + "\nAt line: " + __ASSERT_LINE_ERROR__; \
    			MessageBoxA(0, &__ASSERT_ERROR_TEXT__[0],"Assert failure", 0); \
              }
    		  
    
    int main()
    {      
    	int aaa;
    	cout << "inserire: ";
    	cin >> aaa;
    	ASSERT( aaa > 0);
    	
    	char p;
    	cin >> p;
    
    	return 0;
    }
    infatti se inserisco un numero minore di zero, crasha, quindi immagino che ho sbagliato qualcosa nel define... cosa??

    grazue

  2. #2
    UP

  3. #3
    nessuno mi sa dire che cosa ho sbalgliato ??

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    codice:
    char * __ASSERT_LINE_ERROR__;  itoa(__LINE__,__ASSERT_LINE_ERROR__,10);
    itoa non alloca automaticamente la stringa, per cui il programma crasha perchè va in overflow sull'accesso all'array. Invece di metterci un char* mettici un array di 20 caratteri, tanto nessuno credo scriva programmi da 1 miliardo di miliardi di righe.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.