Я пытаюсь убрать предупреждения, которые я получаю при компиляции Blitz ++ формы:
/opt/local/include/blitz/tinyvec2.h:261:35: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
/opt/local/include/blitz/tinyvec2.h:264:43: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
/opt/local/include/blitz/tinyvec2.h:267:40: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
<<etc.>>
Из этих видов функций-членов (из TinyVector
учебный класс)
T_numtype * restrict data() // line 261
{ return data_; } // data is a member that is an array of data values
const T_numtype * restrict data() const // line 264
{ return data_; }
Насколько я могу судить, я получаю предупреждения из-за restrict
ключевое слово. Примечание: есть макросы, которые должны заменить restrict
с __restrict__
(который понимает g ++).
Я могу избавиться от предупреждений, удалив ключевые слова; однако, поскольку предполагается, что это высокопроизводительная числовая библиотека, я не хочу терять оптимизацию компилятора, которую restrict
ключевые слова позволяют.
Что я могу сделать, чтобы подавить эти предупреждения, не опуская restrict
в целом, и сохраняя -Wall
на?
ПРОЧТИ МЕНЯ
__restrict__
не использует возвращаемые типы, именно поэтомуgcc
дает вам диагностику. Ключевое слово используется для обозначения того, что два указателя, переданные функции, не указывают на один и тот же объект, т.е. что они уникальны; изменение одного не повлияет на другое. Это может значительно улучшить оптимизацию, но стоит отметить, что это не повлияет на возвращаемое значение функции.Там нет причин для вас, чтобы подать заявку
__restrict__
на тип возврата.
Выше ПРОЧТИ МЕНЯ написано мной, я использовал цитаты привлечь к нему дополнительное внимание, поскольку содержащаяся информация важна для рассматриваемого вопроса.
Игнорировать предупреждение, используя специфическую для gcc прагму
Вы могли бы спросить gcc
игнорировать соответствие диагностики -Wignored-qualifiers
используя диагностические прагмы.
Игнорировать это везде
Это будет игнорировать каждое предупреждение о том, что -Wignored-qualifiers
позволит;
#pragma GCC diagnostic ignored "-Wignored-qualifiers"
Проигнорируйте это для выбранной области
Это будет игнорировать -Wignored-qualifiers
связанные предупреждения для кода заменены ...
... // warnings enabled
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wignored-qualifiers"
... // warning disabled here
#pragma GCC diagnostic pop
... // warnings enabled again
Заметка: -Wignored-qualifiers
включен через -Wextra
не -Wall
,