[cfe-dev] Get macro name or its length

Andrey Tarasevich tarasevich.andrey at googlemail.com
Mon Jul 4 10:41:58 PDT 2011


Thank you very much! It works perfect.

2011/6/30 Douglas Gregor <dgregor at apple.com>:
>
> On Jun 30, 2011, at 11:17 AM, Andrey Tarasevich wrote:
>
>> Hello
>>
>> assume following code;
>>
>> #define MACRO ((void*)0)
>>
>> int main()
>> {
>>    int n;
>>    int* p;
>>    if(p == MACRO)
>>       n = 1;
>> }
>>
>> During the AST generation I can get the expression p == MACRO and its
>> SourceLocation. The Begin and End of the SourceLocation will be
>> following 80 and 2147487899. Then I can get InstantiationInfo about
>> macro and begging and end of this info will be the same 85 and 85
>> according to the SourceManager class.
>> So my question is the following - is there any way to retrieve the
>> name of the MACRO?
>
> Lexer::getSpelling()
>
>> Or its length?
>
> Lexer::MeasureTokenLength()
>
>> How can I get position of the last
>> symbol of "MACRO" word in source file?
>
> Preprocessor::getLocForEndOfToken()
>
>        - Doug
>
>




More information about the cfe-dev mailing list