Проблемы с __FILE__ и __LINE__ в дебаг сообщениях
От: IROV..  
Дата: 11.10.05 12:40
Оценка:
Вот написал небольшой дебашный финт..

#    pragma once

namespace NError
{
    class CMessageError
    {
    public:
        inline CMessageError(const char * File, int Line)
        :    m_File(File)
        ,    m_Line(Line)
        {
        }

        void operator() (const char * Message, ...);

    private:
        const char * m_File;
        int m_Line;
    };
}

#    define ErrorMessage NError::CMessageError(__FILE__,__LINE__)




Использую вот так..
ErrorMessage("Bad parse file [%s] error code [%d]"
    ,File.c_str()
    ,ErrorCode);



И получаю вот такую ошибку ;(

fatal error C1055: compiler limit : out of keys


Если убрать макросы.. __FILE__ и __LINE__ то все ок..

в чем трабла? самое интерестное если перекомпилить раз 5.. то на 6 проскочит
я не волшебник, я только учусь!
Re: Проблемы с __FILE__ и __LINE__ в дебаг сообщениях
От: A. Fedotov Украина  
Дата: 11.10.05 12:59
Оценка:
Здравствуйте, IROV.., Вы писали:

код правильный , просто разворачиваются
__FILE__ и __LINE__

Fatal Error C1055compiler limit : out of keys

The source file contains too many symbols. The compiler ran out of hash keys for the symbol table.

Possible solutions

Split the source file into smaller files.
Eliminate unnecessary header files.
Reuse temporary and global variables instead of creating new ones.

Re[2]: Проблемы с __FILE__ и __LINE__ в дебаг сообщениях
От: IROV..  
Дата: 11.10.05 13:48
Оценка:
Здравствуйте, A. Fedotov, Вы писали:

AF>Здравствуйте, IROV.., Вы писали:


AF>код правильный , просто разворачиваются

AF>__FILE__ и __LINE__

AF>

AF>Fatal Error C1055compiler limit : out of keys

AF>The source file contains too many symbols. The compiler ran out of hash keys for the symbol table.

AF>Possible solutions

AF>Split the source file into smaller files.
AF>Eliminate unnecessary header files.
AF>Reuse temporary and global variables instead of creating new ones.


спасибо, уже прочитал в msdn.

но проблему это не решает.. может есть способ.. увеличить compiler limit?
я не волшебник, я только учусь!
Re[3]: Проблемы с __FILE__ и __LINE__ в дебаг сообщениях
От: A. Fedotov Украина  
Дата: 11.10.05 13:59
Оценка:
Здравствуйте, IROV.., Вы писали:

IRO>но проблему это не решает.. может есть способ.. увеличить compiler limit?

1. перенести проект в корень ))
2. передефайнь в каждом файле __FILE__ со своим смысловым значением,
посмотри __FUNCTION__ может её хватит.
3. делай что советует MSDN и посмотри /Zmnumber
Re[4]: Проблемы с __FILE__ и __LINE__ в дебаг сообщениях
От: IROV..  
Дата: 11.10.05 14:15
Оценка:
Здравствуйте, A. Fedotov, Вы писали:

AF>Здравствуйте, IROV.., Вы писали:


IRO>>но проблему это не решает.. может есть способ.. увеличить compiler limit?

AF>1. перенести проект в корень ))


AF>2. передефайнь в каждом файле __FILE__ со своим смысловым значением,

c каким?

AF> посмотри __FUNCTION__ может её хватит.

можно попробовать.. но это как дополнение.. либо вместо __LINE__

AF>3. делай что советует MSDN и посмотри /Zmnumber

как?
я не волшебник, я только учусь!
Re[5]: Проблемы с __FILE__ и __LINE__ в дебаг сообщениях
От: A. Fedotov Украина  
Дата: 11.10.05 14:36
Оценка:
Здравствуйте, IROV.., Вы писали:

ну сделай типа такого
char* pfile = __FILE__;

#    define ErrorMessage NError::CMessageError(pfile,__LINE__)

ну чтоб один раз макрос подставился в файле, или как-то по другому.
намного легче чем разбивать код на составные файлы.
успехов.
Re[6]: Проблемы с __FILE__ и __LINE__ в дебаг сообщениях
От: IROV..  
Дата: 12.10.05 06:49
Оценка:
Здравствуйте, A. Fedotov, Вы писали:

AF>Здравствуйте, IROV.., Вы писали:


AF>ну сделай типа такого

AF>
AF>char* pfile = __FILE__;

AF>#    define ErrorMessage NError::CMessageError(pfile,__LINE__)
AF>

AF>ну чтоб один раз макрос подставился в файле, или как-то по другому.
AF>намного легче чем разбивать код на составные файлы.
AF>успехов.

ага учитывая что

# define ErrorMessage NError::CMessageError(pfile,__LINE__)

находиться в ErrorMessage.h то толку от char* pfile = __FILE__; мне будет очень много

ну да ладно.. чтото придумаем..
я не волшебник, я только учусь!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.