You can install irony-mode and see full information of each completion candidates; it looks like this. Alternatively, you can also use company-clang that comes with company that gives you something like previous screenshot. Note that to have something similar to the screenshot and using Irony, you have to install Company to install company-irony. If you want to display function signature information in the minibuffer, use irony-eldoc. In summary, you have to install 4 packages from MELPA: Company + Irony + Company Irony + Irony Eldoc, and Clang by manually building it yourself following the official guide, or simply install it from the package manager of your OS (i.e. apt-get, yum...). All of this procedure is still much easier from setting YCM server and making it work with Vim.
Note that to build Irony, you have to install Cmake
and run M-x irony-install-server
, press RET and wait it build the server. After the build is finished, you can start using the auto-completion. Clang supports a few compilation systems. If you use Make, simply create an empty .clang_complete
, add include paths where Irony should searches for completion symbols in your project using -Ipath/relative/to/.clang_complete
. You can read about .clang_complete
fully here. You don't need .clang_complete
file or any of the build system, Irony will still work. But then it only looks for files in current directory. To look further, you have to tell it as suggested above.
A picture is worth a thousand words. Here is a gif demo:

As you see, a completion popup with type information. If you notice, when I move the cursor to each completion candidate, a short message is displayed in the minibuffer briefly describes the candidate. After pressing RET to insert a desired candidate and change the parameters to actual arguments, I moved point to the candidate I inserted and its type information and a short summary message is displayed in the minibuffer.
So, one of those solutions should solve your completion problem. Since you put Helm tag there, I assume you use Helm. If so, you can use helm-gtags and use helm-gtags-dwim
at a symbol at point. It will list all function signature in a Helm buffer without jumping to it. You can look at all the function signatures, then press C-g
to go back to your current buffer. The advantage compare with the minibuffer approach is that you can look up more than one definition, while minibuffer can only show you one closest match it could find.
EDIT: If you use Emacs 24.4. you may also want to try Semantic Refactor. Here are the demos.