На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Заглушка своими руками. , что бы функция вообще не вызывалась
    У меня есть функция записи в лог файл. Функция используется в куче мест.
    (тысячи может быть 2 раз)
    при этом, понятно, что в самой функции стоит директива:

    #ifdef _ALLOW_TO_WRITE_LOG_FILE
    тело
    #endif

    но все равно, функция вызываться будет. Это значит, что релиз сделать
    методом убирания директивы _ALLOW_TO_WRITE_LOG_FILE не выйдет - все функции придется
    по любому тереть, ибо так повелел нам. можно ли как нибудь сделать
    такую фишку, что бы функции автоматически переставали вызываться.

    директиву

    #ifdef _ALLOW_TO_WRITE_LOG_FILE
    FunctionCall()
    #endif

    не предлагать - мне проще вытереть 2000 строк чем добавить 4000.
    Заранее спасибо.
      AQL, если ты в каком-нибудь хедере пропишешь эту функцию с пустым телом да еще и inline только ленивый компилятор подставит тебе ее вызов. Нормальные компиляторы, особенно при сборке release-версии, вообще ничего в данном случае не сгенерируют. Будет казаться, что функции нет.
        я кажется понял.
        только вот смотри:

        WriteErrorLogFile("Привет мир!");
        или вот такая:
        WriteErrorLogFile(_Module.GetNumberOfUsers(), "Привет мир!");


        эта функция берет строку, ты думаешь, что неленивый компилятор сообразит, что
        _Module.GetNumberOfUsers() вычислять не нужно, и вообще на эту ф-ю (WriteErrorLogFile())
        можно забить?
        Сообщение отредактировано: AQL -
          :)) Я думаю да. Забьет.
            тогда давай так: VC 6 SP 5 - ленивый?
              Цитата
              AQL, 23.01.04, 15:56
              тогда давай так: VC 6 SP 5 - ленивый?

              Лентяй однако. Вызывает...
                мда.. мне тоже так показалось.
                А семерка кажись заглушки знает (судя по тому что писали на RSDN)?
                  Цитата
                  AQL, 23.01.04, 16:03
                  А семерка кажись заглушки знает (судя по тому что писали на RSDN)?

                  Не знаю - не читал, не пробовал...
                    Переименуй эту func в _func
                    и напиши
                    #ifdef _DEBUG
                    #define func(a,b,c) _func(a,b,c)
                    #else
                    #define func()
                    #endif
                      статья вот эта

                      http://www.rsdn.ru/article/devtools/perftest2.xml


                      YuraN - такой метод не будет компилироваться, потому что должно
                      а) совпадать количество параметров.
                      б) то что стоит в качестве параметров не должно вычисляться.

                      хотя... надо попробовать.
                      Сообщение отредактировано: AQL -
                        ну тогда так
                        #ifdef _DEBUG
                        //объявление и сама функция
                        #else
                        #pragma warning(disable:4002)
                        #define func() // имхо ничего здесь вычисляться не будет
                        #endif
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0,0548 ]   [ 16 queries used ]   [ Generated: 27.04.24, 06:04 GMT ]