Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.218.129.100] |
|
Сообщ.
#1
,
|
|
|
У меня есть функция записи в лог файл. Функция используется в куче мест.
(тысячи может быть 2 раз) при этом, понятно, что в самой функции стоит директива: #ifdef _ALLOW_TO_WRITE_LOG_FILE тело #endif но все равно, функция вызываться будет. Это значит, что релиз сделать методом убирания директивы _ALLOW_TO_WRITE_LOG_FILE не выйдет - все функции придется по любому тереть, ибо так повелел нам. можно ли как нибудь сделать такую фишку, что бы функции автоматически переставали вызываться. директиву #ifdef _ALLOW_TO_WRITE_LOG_FILE FunctionCall() #endif не предлагать - мне проще вытереть 2000 строк чем добавить 4000. Заранее спасибо. |
Сообщ.
#2
,
|
|
|
AQL, если ты в каком-нибудь хедере пропишешь эту функцию с пустым телом да еще и inline только ленивый компилятор подставит тебе ее вызов. Нормальные компиляторы, особенно при сборке release-версии, вообще ничего в данном случае не сгенерируют. Будет казаться, что функции нет.
|
Сообщ.
#3
,
|
|
|
я кажется понял.
только вот смотри: WriteErrorLogFile("Привет мир!"); или вот такая: WriteErrorLogFile(_Module.GetNumberOfUsers(), "Привет мир!"); эта функция берет строку, ты думаешь, что неленивый компилятор сообразит, что _Module.GetNumberOfUsers() вычислять не нужно, и вообще на эту ф-ю (WriteErrorLogFile()) можно забить? |
Сообщ.
#4
,
|
|
|
) Я думаю да. Забьет.
|
Сообщ.
#5
,
|
|
|
тогда давай так: VC 6 SP 5 - ленивый?
|
Сообщ.
#6
,
|
|
|
Цитата AQL, 23.01.04, 15:56 тогда давай так: VC 6 SP 5 - ленивый? Лентяй однако. Вызывает... |
Сообщ.
#7
,
|
|
|
мда.. мне тоже так показалось.
А семерка кажись заглушки знает (судя по тому что писали на RSDN)? |
Сообщ.
#8
,
|
|
|
Цитата AQL, 23.01.04, 16:03 А семерка кажись заглушки знает (судя по тому что писали на RSDN)? Не знаю - не читал, не пробовал... |
Сообщ.
#9
,
|
|
|
Переименуй эту func в _func
и напиши #ifdef _DEBUG #define func(a,b,c) _func(a,b,c) #else #define func() #endif |
Сообщ.
#10
,
|
|
|
статья вот эта
http://www.rsdn.ru/article/devtools/perftest2.xml YuraN - такой метод не будет компилироваться, потому что должно а) совпадать количество параметров. б) то что стоит в качестве параметров не должно вычисляться. хотя... надо попробовать. |
Сообщ.
#11
,
|
|
|
ну тогда так
#ifdef _DEBUG //объявление и сама функция #else #pragma warning(disable:4002) #define func() // имхо ничего здесь вычисляться не будет #endif |