QUOTED:

"
##ONE and ##TWO will yield syntax errors -- you are not using token

pasting correctly. What do you think you are pasting together? Token

pasting is used inside of a pre-processor macro to combine two tokens

into a single token (which also must be valid). Your use here is

completely incorrect."

I know my program is incorrect giving syntax error. I am not able to find how 
to use this feature of token concatenation thats why I am seeking help in this 
group.
I could have written like 
case ONE
case TWO
but what I wanted to know is the syntax as how to implement this feature doing 
something with the COM ports(say). Now COM ports are defined as COM1,COM2 etc. 
Suppose I want to just define the COM port number as :
#define     P    1 or 2 etc
so that while writing the associated handlers I can just write COM##P which 
would be understood by the preprocessor as COM1 or COM2 etc. and implemented 
accordingly in the program.  So thats all. Instead of  modifying at many parts 
of the program we just change the number 'n'.
 
Karmennevaya Dhikaraste, Maaphaaleshu Kadaachanah

----- Original Message ----
From: Brett McCoy <[EMAIL PROTECTED]>
To: [email protected]
Sent: Friday, 16 November, 2007 1:22:22 AM
Subject: Re: [c-prog] How is Token Concatenation done here









  


    
            On Nov 15, 2007 2:39 PM, debasish deka <debasish_deka@ yahoo.co. 
in> wrote:



> I have read in K&R's C Programming and was trying for implementing token 
> concatenation as follows:

>

> #define ONE        1

> #define TWO        2

>

> int main()

> {

>     int i;

>     printf("\nEnter the number\n");

>     scanf("%d",& i);

>     switch(i)

>     {

>              case(##ONE):

>              printf("\nONE" );

>              break;

>              case(##TWO):

>              printf("\nTWO" );

>              break;

>              default:

>              printf("\nDefault\ n");

>     }

>   system("PAUSE" );

>   return 0;

> }



##ONE and ##TWO will yield syntax errors -- you are not using token

pasting correctly. What do you think you are pasting together? Token

pasting is used inside of a pre-processor macro to combine two tokens

into a single token (which also must be valid). Your use here is

completely incorrect.



token concatenation was used a lot in the old days of C++ to create

pseudo-templates before real templates were part of the standard.



--  Brett

------------ --------- --------- --------- --------- --------- -

"In the rhythm of music a secret is hidden;

    If I were to divulge it, it would overturn the world."

               -- Jelaleddin Rumi



    
  

    
    




<!--

#ygrp-mkp{
border:1px solid #d8d8d8;font-family:Arial;margin:14px 0px;padding:0px 14px;}
#ygrp-mkp hr{
border:1px solid #d8d8d8;}
#ygrp-mkp #hd{
color:#628c2a;font-size:85%;font-weight:bold;line-height:122%;margin:10px 0px;}
#ygrp-mkp #ads{
margin-bottom:10px;}
#ygrp-mkp .ad{
padding:0 0;}
#ygrp-mkp .ad a{
color:#0000ff;text-decoration:none;}
-->



<!--

#ygrp-sponsor #ygrp-lc{
font-family:Arial;}
#ygrp-sponsor #ygrp-lc #hd{
margin:10px 0px;font-weight:bold;font-size:78%;line-height:122%;}
#ygrp-sponsor #ygrp-lc .ad{
margin-bottom:10px;padding:0 0;}
-->



<!--

#ygrp-mlmsg {font-size:13px;font-family:arial, helvetica, clean, sans-serif;}
#ygrp-mlmsg table {font-size:inherit;font:100%;}
#ygrp-mlmsg select, input, textarea {font:99% arial, helvetica, clean, 
sans-serif;}
#ygrp-mlmsg pre, code {font:115% monospace;}
#ygrp-mlmsg * {line-height:1.22em;}
#ygrp-text{
font-family:Georgia;
}
#ygrp-text p{
margin:0 0 1em 0;}
#ygrp-tpmsgs{
font-family:Arial;
clear:both;}
#ygrp-vitnav{
padding-top:10px;font-family:Verdana;font-size:77%;margin:0;}
#ygrp-vitnav a{
padding:0 1px;}
#ygrp-actbar{
clear:both;margin:25px 0;white-space:nowrap;color:#666;text-align:right;}
#ygrp-actbar .left{
float:left;white-space:nowrap;}
.bld{font-weight:bold;}
#ygrp-grft{
font-family:Verdana;font-size:77%;padding:15px 0;}
#ygrp-ft{
font-family:verdana;font-size:77%;border-top:1px solid #666;
padding:5px 0;
}
#ygrp-mlmsg #logo{
padding-bottom:10px;}

#ygrp-vital{
background-color:#e0ecee;margin-bottom:20px;padding:2px 0 8px 8px;}
#ygrp-vital #vithd{
font-size:77%;font-family:Verdana;font-weight:bold;color:#333;text-transform:uppercase;}
#ygrp-vital ul{
padding:0;margin:2px 0;}
#ygrp-vital ul li{
list-style-type:none;clear:both;border:1px solid #e0ecee;
}
#ygrp-vital ul li .ct{
font-weight:bold;color:#ff7900;float:right;width:2em;text-align:right;padding-right:.5em;}
#ygrp-vital ul li .cat{
font-weight:bold;}
#ygrp-vital a{
text-decoration:none;}

#ygrp-vital a:hover{
text-decoration:underline;}

#ygrp-sponsor #hd{
color:#999;font-size:77%;}
#ygrp-sponsor #ov{
padding:6px 13px;background-color:#e0ecee;margin-bottom:20px;}
#ygrp-sponsor #ov ul{
padding:0 0 0 8px;margin:0;}
#ygrp-sponsor #ov li{
list-style-type:square;padding:6px 0;font-size:77%;}
#ygrp-sponsor #ov li a{
text-decoration:none;font-size:130%;}
#ygrp-sponsor #nc{
background-color:#eee;margin-bottom:20px;padding:0 8px;}
#ygrp-sponsor .ad{
padding:8px 0;}
#ygrp-sponsor .ad #hd1{
font-family:Arial;font-weight:bold;color:#628c2a;font-size:100%;line-height:122%;}
#ygrp-sponsor .ad a{
text-decoration:none;}
#ygrp-sponsor .ad a:hover{
text-decoration:underline;}
#ygrp-sponsor .ad p{
margin:0;}
o{font-size:0;}
.MsoNormal{
margin:0 0 0 0;}
#ygrp-text tt{
font-size:120%;}
blockquote{margin:0 0 0 4px;}
.replbq{margin:4;}
-->








      Get the freedom to save as many mails as you wish. To know how, go to 
http://help.yahoo.com/l/in/yahoo/mail/yahoomail/tools/tools-08.html

[Non-text portions of this message have been removed]

Reply via email to