Incrementing array names

This is a discussion on Incrementing array names within the C Programming forums, part of the General Programming Boards category; Hello guys, Sorryto interrupt, but I have a problem what is driving me nuts. First of all, I have some ...

  1. #1
    Registered User
    Join Date
    Feb 2008

    Incrementing array names

    Hello guys,

    Sorryto interrupt, but I have a problem what is driving me nuts.
    First of all, I have some programming background, but I am not a professional.
    I learned C & C++ just by doing and informing myself. Not classes visited in college whatsoever.

    So, I try to program a Atmel microcontroller using WINAVR libs and wxDevC++ (GCC compiler based).
    In my coding, I have a function:

    void partPicTransfer(volatile uint16_t startAddress,
                                         volatile uint8_t xSize,
                                         volatile uint16_t picSize,
                                         const uint8_t picture[]);
    As you can see, "const uint8_t picture[]" is a unsigned int array of variable size.
    While I go through the code, at one point I use a for loop and try to use global varibles to modify the array name in that function in order to get the right array at a given point.

    -> Array I try to access:
    const uint8_t GBNum1[] PROGMEM = {.....};
    -> Global variable:
    unsigned int thr = 0;
    -> Execution:
    partPicTransfer(0x681, 4, 128, GBNum(thr));

    "thr" is the value, which should increment the array name in the loop.
    That way, I get of course linker problems, since GBNum is unknown.
    So, how can I make the program to recognize my operation?

    Again, sorry if this is annoying you, but I worked the last 3 hours on that and still am lacking some C background.

    I would really appreciate it, if you could give me a hand here.

    Thomas. (LFrieza)

  2. #2
    Kernel hacker
    Join Date
    Jul 2007
    Farncombe, Surrey, England
    partPicTransfer(0x681, 4, 128, &GBNum[thr]);

    Compilers can produce warnings - make the compiler programmers happy: Use them!
    Please don't PM me for help - and no, I don't do help over instant messengers.

  3. #3
    Registered User
    Join Date
    Feb 2008
    The compiler tells me that GBNum is undeclared, which is understandable, since the arraysnames are the ones I try to increment.

    Array names I try to access that way (listup):

    const uint8_t GBNum0[] PROGMEM = {.....}
    const uint8_t GBNum9[] PROGMEM = {.....}
    As you can see, I try actually to access the array named "GBNum0" - "GBNum9".
    "thr" should therfore only increment the last part of the arrayname.

    Thanks for the try though.


  4. #4
    "I Win!" by U. Lose vart's Avatar
    Join Date
    Oct 2006
    Rishon LeZion, Israel
    make it 2-dimentional array instead. GBNum[9][]
    If you cannot do it - use array of pointers
    GBNum[9], initialize pointer to point to the corresponding arrays GBNum1, ..., GBNum9
    To be or not to be == true

  5. #5
    - - - - - - - - oogabooga's Avatar
    Join Date
    Jan 2008
    Quote Originally Posted by LFrieza View Post
    I learned C & C++ just by doing and informing myself.
    I.e., the usual way.

    You need a 2-dim array, like vart says. Or something like:
    uint8_t **GBNum[9];
    GBNum[0] = GBNum0;

  6. #6
    Registered User
    Join Date
    Feb 2008

    Smile Helped perfectly!

    Hello again,

    thank you all very much for your help!
    Finally, I got that problem out of my code...

    uint8_t *GBNumbers[10] = {GBNum0, GBNum1, GBNum2, GBNum3, GBNum4, GBNum5, GBNum6, GBNum7, GBNum8, GBNum9};
    Using as follows:
          partPicTransfer(0x68C, 4, 128, GBNumbers[7]);
          partPicTransfer(0x68F, 4, 128, GBNumbers[0]);
    Now I get to the information I wanted; thanks again for your time!
    Hopefully, I will be able to help you also in the near future!

    Have good nights,

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 7
    Last Post: 11-25-2008, 01:50 AM
  2. Code: An auto expanding array (or how to use gets() safely).
    By anonytmouse in forum Windows Programming
    Replies: 0
    Last Post: 08-10-2004, 01:13 AM
  3. Quick question about SIGSEGV
    By Cikotic in forum C Programming
    Replies: 30
    Last Post: 07-01-2004, 08:48 PM
  4. two dimensional dynamic array?
    By ichijoji in forum C++ Programming
    Replies: 6
    Last Post: 04-14-2003, 05:27 PM
  5. Array names and char*'s
    By NickESP in forum C++ Programming
    Replies: 3
    Last Post: 02-05-2003, 12:12 PM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21