Возникла проблема. Некие нехорошие люди задекларировали библиотечные функции в лучших сишных традициях как bool_t foo(); bool_t bar(); в то время как вызываются они с параметрами (!!!). Как это проверяли и пропустили - ума не приложу. По идее это должен быть портированный из какого-то *никса код (RPC, будь он неладен), но увы :-(. Самое простое - полезть своими грязными руками в чужой хидер и исправить декларацию. Но хочется чего-то более элегантного. Нет ли у GCC прагмы для локального отключения/включения таких проверок? С декорированием имён проблем быть не должно, в начале хидера есть магическое extern "C" {.
With best regards, Alexander Derazhne.
Didn't find your answer? Ask the community — no account required.
D
Dmitry Fedorov
2003-11-19, Alexander Derazhne snipped-for-privacy@i.com.ua> пишет:
Они не проверяли.
Самое простое - задавить предупреждения компилятора, но раз ты спросил об этом, тебе не хочется это делать и это правильно.
Можно дать ключ -isystem DIR для тех файлов, по умолчанию gcc не слишком придирается к загловкам системных библиотек.
Но лучше сделай местный патч. На стадии конфигурирования твоего проекта (configure или make config или что там у тебя) скрипт копирует заголовочный файл в твою include dir (в которой gcc будет искать файлы первым, потому что ты дал ему соотвествующий -Idir) и накладывает заготовленный патч.
Формат diff и программа patch позволяют сдвиги от исходных номеров строк вверх и вниз при условии совпадения контекста.
Изготовление патча:
diff -1ub file.h.orig file.h >file.patch
где 1 - число строк контекста, которые тебя устраивают для этого случая, можно 0.
Имеет смысл делать несколько мелких патчей для разных частей одного и того же файла, накладывать их можно в любом порядке.
Наложение патча:
patch --fuzz=0 -p0 <file.patch
--fuzz=0 - запрещает уменьшение строк контекста при поиске вверх и вниз, это для безопасности - пусть лучше патч не наложится, чем наложится в неправильном месте.
Все это позволяет накладывать одни и те же патчи на разные версии исходных файлов в случае, например, сдвига изменяемого куска из-за вставок другого кода.
Я делаю так для заголовков ядра линукс, чтобы они не выдавали кучу предупреждений когда я включаю максимально строгие ключи компилятора для кода моих модулей, чтобы мой код таких предупреждений не имел.
A
Alexander Derazhne
Hello, Dmitry! You wrote to Alexander Derazhne on Thu, 20 Nov 2003 10:13:06 +0000 (UTC):
Thanx, буду пробовать.
Alexander,Derazhne@adic,kiev,ua (replace commas with dots) Alexander Derazhne
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.