Прагма GCC для добавления / удаления параметров компилятора в исходном файле

Я разработал кроссплатформенную библиотеку, которая честно использует типа каламбурная в сокетных коммуникациях. Эта библиотека уже используется в ряде проектов, о некоторых из которых я могу не знать.

Неправильное использование этой библиотеки может привести к опасно неопределенному поведению. Я хотел бы в меру своих возможностей убедиться, что эта библиотека используется должным образом.

Помимо документации, конечно, под G ++ лучший способ, которым я знаю, это использовать -fstrict_aliasing а также -Wstrict-aliasing опции.

Есть ли способ в GCC применить эти параметры на уровне исходного файла?

Другими словами, я хотел бы написать что-то вроде следующего:

MyFancyLib.h

#ifndef MY_FANCY_LIB_H
#define MY_FANCY_LIB_H

#pragma (something that pushes the current compiler options)
#pragma (something to set -fstrict_aliasing and -Wstrict-aliasing)

// ... my stuff ...

#pragma (something to pop the compiler options)

#endif

Есть ли способ?

10

Решение

Вы можете попробовать диагностические прагмы и изменить уровень ошибки для ваших предупреждений. Подробнее здесь:

http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html

0

Другие решения

Если ваша библиотека — библиотека только для заголовков, я думаю, что единственный способ справиться с этим — это исправить строгие нарушения псевдонимов. Если нарушения происходят между типами, которые вы определяете, вы можете использовать обычные приемы с участием союзов, или may_alias атрибут типа. Если ваша библиотека использует предопределенный sockaddr типа, это может быть сложно.

0