- fomit-frame-pointer, действительно ли безопасно использовать его?

Я видел во многих местах, что люди часто используют опцию -fomit-frame-pointer при компиляции C / интересно код C++ и, использование той безопасной опции? Для чего это используется?

Большое спасибо, наилучшие пожелания.

6
задан Mick Seng 25 February 2010 в 13:54
поделиться

2 ответа

Этот вариант безопасен, но усложняет отладку. Обычно компилятор C выводит код, который сохраняет в обычном регистре ( ebp на x86) указатель на кадр стека для функции. Отладчики используют это для распечатки содержимого локальной переменной и другой подобной информации. Флаг -fomit-frame-pointer указывает gcc не беспокоиться об этом регистре. В некоторых ситуациях это может привести к небольшому увеличению производительности, в основном из-за уменьшения объема кода (что лучше для кеша) и дополнительного доступного регистра (особенно на x86 в 32-битном режиме, который, как известно, испытывает нехватку регистров).

11
ответ дан 8 December 2019 в 18:35
поделиться

Можно написать help-method:

    public bool Contains(int x, params int[] set) {
        return set.Contains(x);
    }

и использовать короткий код:

    var resultset = from x in collection
                    where Contains(x, 2, 3, 4, 5)
                    select x;
-121--1040667-

Я не знаю, вызывает ли это вашу конкретную проблему, но всегда следует проверять указатель FILE * , возвращаемый fopen () , если он имеет значение NULL .

-121--2349484-

Если ваш код не зависит от неопределенного поведения, то он совершенно безопасен. Это может привести к появлению неопределенных ошибок поведения.

2
ответ дан 8 December 2019 в 18:35
поделиться