В моем коде, я ве получил функцию много деклараций с недействительными указателями в качестве аргументаразбора C++/отслеживание недействительных указателей
void my_func(void* my_void_pointer)
Мне нужно найти все места в моих источниках
- где my_func называется
- (что более важно), с каким типом в качестве аргумента.
Например вызовы, такие как:
int* intpt=new int(10);
my_func(intpt);
или
char* charpt = new char('a');
my_func(charpt);
мне это нужно, потому что обычно my_func делает reinterpret_cast
некоторым самостоятельно определить типы и я хотел бы узнать, что, возможно, могли бы если неправильный мой байтер изменяется.
Я уже посмотрел gcc_xml, но с помощью этого инструмента могу узнать, какие функции определены с помощью каких аргументов/типов аргументов. Конечно, теперь я могу grep источники для вызова функций таких функций, но я до сих пор не знаю, с какими типами они вызываются. Любая идея, с какого инструмента начать?
Надеюсь, вы поймете, почему это была плохая идея (т. Е. Использовать 'void *' как аргумент стираемого типа), если только это не для интерфейса C, и в этом случае интерфейс может содержать суффикс имени типа и выполнять правильное преобразование на этом уровне, предотвращая собственный код, по крайней мере, от хакерских типов. – rubenvb
К сожалению, я очень четко понимаю, почему это плохая идея взломать типы безопасности. В этом случае мне нужно обработать устаревший код, который должен быть перенесен на другую платформу, и мне нужно выяснить, в каких точках он сломается. – ProfHase85
Я чувствую для вас тогда ':)'. Удачи! – rubenvb