Я написал небольшой класс профилирования с сопровождающим классом защиты, чтобы использовать его так:
{
ProfileGuard pg("SampleName");
// Code to profile
...
}
Но потом я заметил, что иногда gcc оптимизирует код так, что pg
мгновенно уничтожается. Очевидно, он обнаруживает, что pg
и другой код не будут влиять друг на друга. Как лучше всего помешать gcc сделать это?
Обновление:
Поскольку у меня возникло серьезное недоверие к моему вопросу, я снова проверю свой код. Я основал свой вопрос на:
3.7.3 3.
Если переменная с автоматическим хранением имеет инициализацию или деструктор с побочными эффектами, она не должна
быть уничтоженным до конца его блока, и при этом это не должно быть устранено как оптимизация, даже если это кажется
быть неиспользованным, за исключением того, что объект класса или его копирование / перемещение могут быть удалены, как указано в 12.8.
Является ли печать "побочным эффектом"?