Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Homework Help: Issue Using Defines In C

  1. Mar 18, 2010 #1
    This is once again for my robot. My current issue is with a define command:

    I have the following function defined in motor_control.c:

    Code (Text):

    //*****************************************************************************
    //Motor Control Functions
    //*****************************************************************************
    void forward(void)          //Go striaght forward
    {
        motorR(THROTTLE,TRIM);
        motorL(THROTTLE,TRIM);
    }
     
    The throttle value controls speed, trim offsets the speed variable. Although it probably will be eliminated.

    Anyhow, I have throttle defined in a header called system_config.h:

    Code (Text):

    #define THROTTLE = fast     //Default forward throttle value to use
     
    The value for "fast" has been enumerated in the header for motor_control.c

    I have included the system_config.h file in the motor_control.c library, so what can't I see it? As far as I'm aware it should be able to see that defined value.
     
  2. jcsd
  3. Mar 18, 2010 #2
    Show error messages.
     
  4. Mar 18, 2010 #3

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    Get rid of the equals sign.

    #define THROTTLE fast
     
  5. Mar 18, 2010 #4
    ...That was a silly mistake. Thanks for the catch.

    The only error message I got was a syntax error when the compiler got to the first function that tried to pass THROTTLE to a function. It didn't say anything else.

    Thanks again for the help.
     
  6. Mar 18, 2010 #5

    Mark44

    Staff: Mentor

    The code your compiler saw was this.
    Code (Text):

    motorR(= fast,TRIM);
    motorL(= fast,TRIM);
     
    The reason for this is that the #define preprocessor directive does nothing more than text replacement. This is why you DON'T want to put = in simple preprocessor directives.
     
  7. Mar 18, 2010 #6
    I see, that makes sense.
     
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook