Попаднах на въпрос относно писането на код за определяне на неизползвани функции в 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