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?
Won’t work. The declaration goes out of scope after the if block. There are two methods -
You know at compile time which one you want
#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)
You know at runtime
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)
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…