[cfe-dev] Fwd: I am trying to using clang to do autocomplete, How to go to declaration of a macro?

Alex L via cfe-dev cfe-dev at lists.llvm.org
Wed Nov 23 04:38:50 PST 2016


On 23 November 2016 at 12:11, 罗勇刚(Yonggang Luo) <luoyonggang at gmail.com>
wrote:

> Thanks a lot, Alex.
> I am trying to do that in command line:) how to do that?
> I meas clang.exe driver:)
>

As far as I know you can't query about the definition of a macro with
command line and clang, but you can list all the macro definitions by using
"clang -dM -E foo.cpp". This might work for you if you're just interested
in the text of the macro definition, since you can search for a macro
like "FOO"
in that list.


>
>
> On Wed, Nov 23, 2016 at 7:39 PM, Alex L <arphaman at gmail.com> wrote:
>
>> I'm not sure that I understood your question correctly, but if you are
>> working on auto completion then you can use Preprocessor::getMacroDefinition
>> to lookup the definition of a some macro. Specifically, as long as you're
>> working with Sema, you can use code similar to the one below:
>>
>>   for (const auto &M : PP.macros()) {
>>     auto MD = PP.getMacroDefinition(M->first);
>>     if (MD) {
>>       // you have access to macro definition here and can lookup it's
>> source location
>>       // by using MD.getMacroInfo()->getDefinitionLoc()
>>     }
>>   }
>>
>> Alex
>>
>> On 23 November 2016 at 11:00, 罗勇刚(Yonggang Luo) via cfe-dev <
>> cfe-dev at lists.llvm.org> wrote:
>>
>>>
>>> ---------- Forwarded message ----------
>>> From: 罗勇刚(Yonggang Luo) <luoyonggang at gmail.com>
>>> Date: Wed, Nov 23, 2016 at 6:58 PM
>>> Subject: I am trying to using clang to do autocomplete, How to go to
>>> declaration of a macro?
>>> To: Clang Dev <cfe-dev at cs.uiuc.edu>
>>>
>>>
>>> For exmaple
>>>
>>> #define FOO 0
>>>
>>> int foo() {
>>>   int x = FOO; /* How to go to decleration of FOO here? *./
>>> }
>>>
>>> --
>>>          此致
>>>>>> 罗勇刚
>>> Yours
>>>     sincerely,
>>> Yonggang Luo
>>>
>>>
>>>
>>> --
>>>          此致
>>>>>> 罗勇刚
>>> Yours
>>>     sincerely,
>>> Yonggang Luo
>>>
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>
>>>
>>
>
>
> --
>          此致
>> 罗勇刚
> Yours
>     sincerely,
> Yonggang Luo
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20161123/edf3ff2e/attachment.html>


More information about the cfe-dev mailing list