Я столкнулся с вопросом, касающимся написания кода для определения неиспользуемых функций в C++. Мы можем использовать различные структуры данных для определения неиспользуемых функций. Но перед этим нам нужно разобрать код. У меня есть вопрос, связанный с частью синтаксического анализа, как мы можем различать объявление и определение функций и вызовы функций?
Нравиться,
//function declaration without argument
fun1 ();
//function definition
fun1 () {
// code goes here
}
main () {
fun1 ();
}
Приведенное выше объявление и вызов выглядят одинаково, тогда как часть определения немного отличается от объявления и вызова.
Помимо приведенного выше сценария, существует несколько сценариев для вызова функции и области функций, например, два класса, имеющие функцию с одинаковым именем, одна функция вызывается внутри функции-члена (т.е. не требуется явный вызывающий объект) ИЛИ вызов функции с использованием объекта, поэтому необходимо понимать сначала тип объекта, чтобы определить, какая функция на самом деле вызывается.
Как можно эффективно реализовать синтаксический анализ? Сколько синтаксических анализов потребуется в приведенном выше сценарии?
implicit int
это правильно. @Sachin Разбор C++ невероятно сложен. Я предлагаю использоватьlibclang
для синтаксического анализа и статического анализа с его помощью вместо того, чтобы пытаться сделать это самостоятельно. С шаблонами это становится невероятно сложно. - person pmr   schedule 16.07.2012implicit int
, наверное, хорошо. - person pmr   schedule 16.07.2012int
. - person Marcelo Cantos   schedule 16.07.2012