CEDET (built-in) does a good job for this.
Use http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html for an introduction to CEDET.
Use semantic-ia-fast-jump
to go to definition of entity at point.
Use function-args or
helm-semantic
if you'd like to jump within a file with helm
like so: