Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   Conditional #define Statements (http://www.chiefdelphi.com/forums/showthread.php?t=25279)

Ian W. 14-02-2004 13:28

Conditional #define Statements
 
I'm rewriting the navigate.c class for our team, and I've come to an annoying problem.

I have two sensors, left and right, for each side of the robot. Depending on a switch, only one should be read. That means I can save on code, I think.

With PBASIC, a simple if statement and alias command would set "sensor" to "left_sensor" or "right_sensor" but I have no idea how to do this in C, without going into pointers (which I don't remember).

Is there any way I can make a conditional #define (or similar) statement?

Paul 14-02-2004 14:59

Re: Conditional #define Statements
 
Why not just have a conditional declaration?
if(your condition is meet)
{
int your_var;
}
else
{
int something else;
}

I'm probably misunderstanding you but its still worth a shot.

steven114 14-02-2004 15:19

Re: Conditional #define Statements
 
Quote:

Originally Posted by Paul
Why not just have a conditional declaration?
if(your condition is meet)
{
int your_var;
}
else
{
int something else;
}

I'm probably misunderstanding you but its still worth a shot.

Won't work. The declaration goes out of scope after the if block. There are two methods -

1) You know at compile time which one you want
Code:

#if IWANTVAR1
#define myVar var1
#else
#define myVar var2
#endif

//myVar now refers to var1 or var2, depending on IWANTVAR1 (which MUST be either a constant or expand to a constant)

2) You know at runtime

Code:

int myVar;
if(iWantVar1)
myVar = var1;
else
myVar = var2;

Note that way 2 only works for reading the variable, not writing. If you want something like the aliases, you either must know at compile time or deal with pointers (afaik)

I hope this is what you wanted...

Ian W. 14-02-2004 18:14

Re: Conditional #define Statements
 
Ah, thanks, I didn't think about doing something simple like just reassigning the variable to a temporary variable. Seeing as I only need to read, I think I can make do with that, but I'll have to fool around with it a bit.

On the other hand, it's always a good time to relearn pointers...


All times are GMT -5. The time now is 18:17.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi