Проверьте, встроена ли конкретная функция - компилятор Intel
У меня есть двоичные библиотеки C/C++ (*.dll, *.sys), файлы obj, из которых они состоят, и их символы (pdb), но не исходный код и не файлы карт.
Согласно символам они были построены компилятором Intel (для Windows).
Есть ли способ проверить, встроена ли конкретная функция?
Заранее спасибо.
1 ответ
ICC особенно агрессивен с встраиванием, и во многих случаях, когда функция объявлена как inline
(и особенно если это __forceinline
на MSVC), на самом деле он выдаст ошибку на этапе компиляции, если не сможет ее встроить (очевидно, в зависимости от настроек компиляции вашего проекта).
Тем не менее, честно говоря, единственный способ сделать то, что вам нужно, - это подключить отладчик, приостановить приложение в MSVC, переключиться в режим ASM и выполнить поиск вызовов для функции, которую вы ищете по имени (вы говорите, C/C++ имеет значение, которое, как и в случае с C++, вам придется искать искаженное имя). Если вы найдете вызовы функции (call _myFunc
), это не указано.
В противном случае, если вы знаете, где искать, просмотрите ASM, чтобы найти функцию вызывающего абонента, и проверьте ее источник, чтобы убедиться, что вызов вызываемого абонента либо есть, либо его нет.
Это может звучать довольно устрашающе, но на самом деле это достаточно просто и просто ctrl+f
далеко.