Trying to make sense of the coding style in Arduino libraries. (Particularly the Radiohead library) I've been using the Arduino IDE for some time now, and I want to shift to coding for the bare AVR microcontroller. So I wanted to begin by porting required arduino libraries to C/C++. 
I started with the Radiohead library, but I've noticed a lot of variables/tokens that are directly used without a definition for them. For example: 

    // path :RadioHead/RH_ASK.cpp
#if (RH_PLATFORM == RH_PLATFORM_GENERIC_AVR8)
 #ifdef RH_ASK_PTT_PIN              
    RH_ASK_PTT_DDR  |=  (1&lt;&lt;RH_ASK_PTT_PIN); 
    RH_ASK_TX_DDR   |=  (1&lt;&lt;RH_ASK_TX_PIN);
    RH_ASK_RX_DDR   &amp;= ~(1&lt;&lt;RH_ASK_RX_PIN);
 #else
    RH_ASK_TX_DDR   |=  (1&lt;&lt;RH_ASK_TX_PIN);
    RH_ASK_RX_DDR   &amp;= ~(1&lt;&lt;RH_ASK_RX_PIN);
 #endif
#else
    // Set up digital IO pins for arduino
    pinMode(_txPin, OUTPUT);
    pinMode(_rxPin, INPUT);
    pinMode(_pttPin, OUTPUT);
#endif


None of the tokens in this snippet like "RH_ASK_PTT_PIN" or  "RH_ASK_TX_PIN" were mentioned anywhere in the code before or any other file that was included.

I understand what the code does, but how does the compiler know what these tokens mean? I tried to compile this code using Atmel Studio but it gives me an error (As it should):
"RH_ASK_PTT_PIN" not declared in this scope
So how does this library work with the Arduino IDE?  

Link to the library : https://github.com/PaulStoffregen/RadioHead

Also can someone suggest tags for this post? Its my first post here.
They're not defined. If you notice that whole block is wrapped in a #ifdef which will be false unless you're on some specific platform, where the platform defines those macros.

Everything else uses the last little bit:

pinMode(_txPin, OUTPUT);
pinMode(_rxPin, INPUT);
pinMode(_pttPin, OUTPUT);


You only need to care about that bit - nothing else is of any concern unless you're using a "RH_PLATFORM_GENERIC_AVR8" (whatever that is).