+ Reply to Thread
Results 1 to 7 of 7

Thread: CPP Warning's: macro redefinition ### see previous definition of ###

  1. #1
    V3T's Avatar

    Eureka CPP Warning's: macro redefinition ### see previous definition of ###

    Небольшая заметка для новичков освоваивающих cpp,
    Если у вас в хедерах идет инициализация системных дифинишенов (например если вы используете boost)

    Code:
    #ifdef WIN32
    
     #include <winsock2.h>
     #include <errno.h>
    
     #define EADDRNOTAVAIL WSAEADDRNOTAVAIL
    ...
    С9499 Warning: macro redefinition EADDRNOTAVAIL see previous definition of errno.h

    Для того чтобы исправить эту проблему, нужно очистить предыдущий вызов функцией:
    Code:
    #undef EADDRNOTAVAIL
    те новый код будет:
    Code:
    #ifdef WIN32
    
     #include <winsock2.h>
     #include <errno.h>
    
    #undef EADDRNOTAVAIL
     #define EADDRNOTAVAIL WSAEADDRNOTAVAIL
    ...
    В программировании я сам новичок но надеюсь кому-нибудь поможет эта информация!

    ps: кстате никто не знает что за варнинг, и как его поправить?

    Code:
    	// get length of file
    
    	IS.seekg( 0, ios :: end );
    	uint64_t FileLength = IS.tellg( );
    	// up to 64 fix ?
    	// uint32_t FileLength = IS.tellg( );
    
    	if( start > FileLength )
    	{
    		IS.close( );
    		return string( );
    	}
    
    	IS.seekg( start, ios :: beg );
    
    	// read data
    
    	char *Buffer = new char[length];
    	IS.read( Buffer, length );
    	string BufferString = string( Buffer, IS.gcount( ) );
    	IS.close( );
    	delete [] Buffer;
    	return BufferString;
    }
    warning C4244: 'argument' : conversion from 'std::streamsize' to 'unsigned int', possible loss of data
    Ругается на строку:
    Code:
    string BufferString = string( Buffer, IS.gcount( ) );

  2. #2
    root's Avatar

    Default Re: CPP Warning's: macro redefinition ### see previous definition of ###

    string BufferString = string( Buffer, IS.gcount( ) );
    Конструктор класса string, из примера выше, имеет следующий прототип:

    string ( const char * s, size_t n );
    Второй параметр size_t является безнаковым типом (unsigned int), ты же передаешь ему переменную типа streamsize (возвращаемую методом gcount() ), которая является знаковой. В варнинге говорится, что при приведении типа (streamsize к unsigned int) возможно потеря некоторой информации, в нашем случае "знака".
    Last edited by root; 05-03-2012 at 03:43.
    Успех – это путь от провала до провала без потери энтузиазма. (В. Черчиль)

    Не бойся идти медленно, бойся остановиться. (Китайская пословица)

    When you lose fun and start doing things only for the payback, you're dead. (c) TCLH (Phrack 65, Intro)

  3. #3
    V3T's Avatar

    Default Re: CPP Warning's: macro redefinition ### see previous definition of ###

    ааа ну тогда варнинг не очень опасный :)

  4. #4
    ARCHANGEL's Avatar

    Default Re: CPP Warning's: macro redefinition ### see previous definition of ###

    boost использует своё одноимённое пространство имён, такие совпадения конкретно с ним исключены. Делай так.
    string BufferString = string( Buffer, (DWORD) IS.gcount( ) );
    Добрым быть просто - достаточно обратить свой гнев на негодяев...

  5. #5
    V3T's Avatar

    Default Re: CPP Warning's: macro redefinition ### see previous definition of ###

    Хм,
    Code:
    	char *Buffer = new char[length];
    	IS.read( Buffer, length );
    //	string BufferString = string( Buffer, IS.gcount( ) );
    	string BufferString = string( Buffer, (DWORD) IS.gcount( ) );
    	IS.close( );
    	delete [] Buffer;
    	return BufferString;
    Ругается:
    error C2065: 'DWORD' : undeclared identifier
    error C2146: syntax error : missing ')' before identifier 'IS'
    error C2059: syntax error : ')'

    Бусты юзаю февральские, 1.49
    Last edited by V3T; 05-03-2012 at 21:58.

  6. #6
    ARCHANGEL's Avatar

    Default Re: CPP Warning's: macro redefinition ### see previous definition of ###

    #include <windows.h>
    Добрым быть просто - достаточно обратить свой гнев на негодяев...

  7. #7
    V3T's Avatar

    Default Re: CPP Warning's: macro redefinition ### see previous definition of ###

    спасибо, варнинг больше не беспокоит :)

+ Reply to Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
All times are GMT. The time now is 01:35
vBulletin® Copyright ©2000 - 2018
www.reverse4you.org