[cfe-dev] Get macro name or its length

Douglas Gregor dgregor at apple.com
Thu Jun 30 11:42:30 PDT 2011


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