Why use __line__ instead of constant

ashawky wrote on Thursday, February 22, 2007:

Dear All,

kindly can any one clear this point to me?

in COROUTINE.H header file i found this defination

from coroutine.h-----------------------------------------------------
#define crSET_STATE0( xHandle ) ( ( corCRCB * )xHandle)->uxState = (__LINE__ * 2); return; case (__LINE__ * 2):
#define crSET_STATE1( xHandle ) ( ( corCRCB * )xHandle)->uxState = ((__LINE__ * 2)+1); return; case ((__LINE__ * 2)+1):

what is "__line__"?
and why "__line__" is used instead of a constant.

best regards


rtel wrote on Thursday, February 22, 2007:

…because each use of the macros has to have a unique number, using the line number is the easiest way of doing this.  The generated numbers are used as ‘cases’ in a switch statement so need all be unique.

As an aside - I tried replying to your email but it bounced.  I have some TMS470 code I can send but it is based on an old version and I have not tested it myself.  I will need a non SourceForge address if you want me to send it.  Do not post email addresses in this forum however.