This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

#define statements on variable declarations

Hello. I am trying to find new and exciting ways to optimize (read: shrink down) my current code and want to include an eeprom autorefresh option to cut down on variables. Basically, when I have the AutoRefreshCompile option set, I want it to create the variable "randomvariable". My code is pretty simple:

#define AutoRefreshCompile 1

        #if(AutoRefreshCompile==1)
        {  // line x
                extern signed short randomvariable;
        }  // line y
        #endif

I am getting errors that read as follows:


VARS.H(x) error C141: syntax error near '{'
VARS.H(y) error C141: syntax error near '}'

I'm guessing it is not possible to do this (if I remember correctly, variables have to be declared at the beginning and can't be in the middle of functions/code segments but maybe it's some really simple fix.

I realize this might not work but I figure it's worth a shot. Any suggestions? Thanks!

  • No, that's not true.

    If the preprocessor directives, after preprocessing, leave any syntax error, then you'll get diagnostics about those errors.

    In this case, the preprocessor directives, after preprocessing, left misplaced braces - so the OP got diagnostics about those misplaced braces.

    It's not that the braces in any way "interfered with" or "screwed-up" the preprocessor directives.

  • It's people like you I don't get. This forum already has plenty of people who add nothing to a technical discussion and only seem to pop in to berate someone for their approach on a subject or their lack of knowledge. Add something to the conversation or go away. There are already too many of you.

    That entire last paragraph was unnecessary. You could have just as easily stated your concerns in the way Neil did without judgemental statements but you had to go that extra mile to be an ***.

    And you don't know anything about me or my approach.

  • Andrew, I think I understand a bit better where you're coming from. From my perspective, it was asking a pretty pointed question about what I was trying to achieve but I can see how it would point to a missing fundamental or confusion as to what I do or don't understand.

    I HAVE taken classes and I HAVE read books but I will admit, it's been a while and I've been coding primarily Atmel and Visual Studio for the past few years (I'm primarily a hardware engineer and doing a lot more coding than I originally thought I would). I recently have had to take up C for this project and need to do some brushing up, clearly. And unfortunately, there are no "mentors" around. Most of our senior engineers were laid off when the economy went downhill and I've had to take on some software/firmware since we no longer have people that do that. Honest truth, we have more projects than time so it's often easier to ask the experts and be pointed in the right direction. I don't mind being corrected though I definitely don't like the general approach in these forums (the formula looks something like this 1) point out person doesn't have any idea what they were talking about 2) make the person look like an idiot for not knowing this 3) tell them to read a book or stop coding altogether 4) Insert at least one unnecessary statement added to either make yourself look better and/or to make the other person sound like an idiot. See Mike's post below, he seems to have it down).

    Thanks for taking the time to clear up the confusion with this. I appreciate the honesty.

  • ... from all that stamping in the floor.

    Honest truth, we have more projects than time so it's often easier to ask the experts and be pointed in the right direction
    you were: "Read about #if... in a C book"

    If you really want to be honest, then, if the specific answer to the particular issue in the first post you posted was the best response, then WHY did you come back with more #if ... issues?

    If you had read the chapter on #if ..,. etc (which in most books is 3-5 pages) you would have had all these issues solved in, say, 10 minutes, instead of endless discussions in this forum.

    if you have specific questions that are not, as this thread, VERY basic C then please come back.

    re making the poster feel stupid. Nobody but yourself can make you feel stupid. If you are one of those that promote political correctness, get out of microcontrollers, you will find very few friends among the pros.

    Erik

  • Add something to the conversation or go away

    what about your last posts that are nothingn but WAAAAAAAAHH. how muct do they "Add to the conversation"

    Erik

  • you had to go that extra mile to be an ***

    Agressive ignorance. How charming.

  • you had to go that extra mile to be an ***

    Agressive ignorance. How charming.
    typical response from someone that expect the replies to be "politically corect"

    I have seen this many times "why did you not answer the way I wanted you to, expletive"

    it is amazing that the more someone expect others to be "politically correct" the more likely it is that the reply to whatever is not seen as "politically correct" will be an expletive

    Erik