Как я предотвращаю свои 'неиспользованные' глобальные переменные, скомпилированные?

Ключевое слово virtual в C # позволяет переопределить метод или свойство дочерними классами. Для получения дополнительной информации см. документацию MSDN по ключевому слову «virtual»

ОБНОВЛЕНИЕ: Очевидно, что мой ответ не соответствует тому, что ожидалось, учитывая обстоятельства вопроса , но я оставлю его здесь для тех, кто ищет простой ответ на оригинал , заданный без описательного вопроса.

22
задан Ben Hymers 4 August 2009 в 22:32
поделиться

6 ответов

Компилятору не разрешено оптимизировать глобальные объекты.
Даже если они никогда не используются.

В вашем коде что-то еще происходит.
Теперь, если вы создали статическую библиотеку с вашим глобальным объектом и на этот глобальный объект не ссылается исполняемый файл, он не будет втянут в исполняемый файл компоновщиком.

37
ответ дан 29 November 2019 в 04:33
поделиться

Вы можете использовать

#pragma optimize off
int globalVar
#pragma optimize on

, но я не знаю, работает ли это только в Visual Studio ( http://msdn.microsoft.com/en-us/library/chh3fb0k (VS.80 ) .aspx ).

Вы также можете указать компилятору вообще не оптимизировать, особенно если вы отлаживаете ...

1
ответ дан atk 29 November 2019 в 04:33
поделиться

Как насчет использования ключевого слова volatile? Это предотвратит слишком большую оптимизацию компилятора.

-2
ответ дан Partial 29 November 2019 в 04:33
поделиться

Чтобы развить Arthur Ulfeldt, volatile сообщает компилятору, что эта переменная может изменяться вне зависимости от компилятора. Я использовал его для оператора put, позволяющего отладчику установить точку останова. Это также полезно для аппаратных регистров, которые могут изменяться в зависимости от среды или для которых требуется особая последовательность. т.е. регистр приема последовательного порта и определенные регистры сторожевого таймера.

2
ответ дан 29 November 2019 в 04:33
поделиться

Компилятор никогда не должен оптимизировать такие глобальные объекты - если он это сделает, он просто сломается.

5
ответ дан 29 November 2019 в 04:33
поделиться

Используете ли вы gcc с gdb? В прошлом была проблема, когда gdb не мог точно установить точки останова в конструкторах.

Кроме того, вы используете уровень оптимизации, который позволяет компилятору встраивать методы в определение класса.

0
ответ дан 29 November 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: