Thread: switch on basis of constant array

  1. #1
    Registered User
    Join Date
    Feb 2017
    Posts
    4

    Question switch on basis of constant array

    Given:
    Code:
    const uint8_t SLAVE_1[] = { 0xBB, 0x00, 0x00, 0x00, 0x00 };
    which is passed as a parameter to a function:
    Code:
    void sendTask1to(const uint8_t* slave);
    I want to use a switch on the basis of the parameter, comparing it to the constant:
    Code:
       switch (slave)
       {
       case SLAVE_1:
        slave1purchased = true;
        break;
       case SLAVE_2:
        slave2purchased = true;
        break;
       default:
        if (debug) Serial.println("Slave not available for purchase");
       }  // end switch
    Well, that's the idea, anyway. Trouble is that, try what I might, I cannot get it to compile. It must be said that I am no whizz-kid with 'C' or 'C++' and I suspect that this is a dereferencing problem, but I have tried everything I can think of.

    Can someone please tell me how to get the switch to work?

    Thanks

  2. #2
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,659
    switch (*slave) would be syntactically correct, but the whole point of passing a pointer would be to deal with multiple slaves at the same time.

    So really, one would expect
    void sendTask1to(const uint8_t* slave, int count);

    And a for loop iterating over
    switch ( slave[i] )
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  3. #3
    Registered User
    Join Date
    Feb 2017
    Posts
    4
    If I try (*slave), the compiler moans,

    Code:
    "masterBackChat.ino: 686:6: error: conversion from pointer type 'const uint8_t (*)[5] {aka const unsigned char (*)[5]}' to arithmetic type 'int' in a constant-expression"

  4. #4
    Registered User
    Join Date
    Feb 2017
    Posts
    4
    Thanks for the prompt reply.

    This code is actually for Arduino and the master is dealing with an individual slave.

    Here is the full compiler printout
    Code:
    Compiling debug version of 'masterBackChat' for 'Arduino/Genuino Uno'
    Build folder: file:///C:/Users/Rick/AppData/Local/Temp/VMBuilds/masterBackChat/uno/Debug
    Additional Defines: VM_DEBUG;VM_DEBUG_ENABLE 1;VM_DEBUG_BANDWIDTH_THROTTLE_MS 33;VM_DEBUGGER_TYPE_HARDWARESERIAL 0;VM_DEBUGGER_TYPE_SOFTWARESERIAL 1;VM_DEBUGGER_TYPE_FASTSERIAL 2;VM_DEBUGGER_TYPE_USB 3;VM_DEBUGGER_TYPE_TEENSY 4;VM_DEBUGGER_TYPE_UART 5;VM_DEBUGGER_TYPE_USART 6;VM_DEBUGGER_TYPE_USBSERIAL 7;VM_DEBUGGER_TYPE_TTYUART 8;VM_DEBUGGER_TYPE_NET_CONSOLE 9;VM_DEBUGGER_TYPE_Uart 10;VM_DEBUGGER_TYPE_COSA 11;VM_DEBUGGER_TYPE_CDCSerialClass 12;VM_DEBUGGER_TYPE_HARDWARESERIAL1 13;VM_DEBUGGER_TYPE_HARDWARESERIAL2 14;VM_DEBUGGER_TYPE_HARDWARESERIAL3 15;VM_DEBUGGER_TYPE_NET_UDP 16;VM_DEBUGGER_TYPE VM_DEBUGGER_TYPE_HARDWARESERIAL;VM_DEBUG_BREAKPAUSE;
    Architecture Tools: C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/
    Sketchbook: file:\\\D:\Documents\Arduino
    Sketch Include Paths
    Core Include Paths
    Include Path 'C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino'
    Include Path 'C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard'
    Searching for libraries ...
    "C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=106013 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "C:\Users\Rick\AppData\Local\Temp\VMBuilds\masterBackChat\uno\Debug\masterBackChat.cpp" -o "nul"
    "C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=106013 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" -I"D:\Documents\Arduino\libraries\RF24-master" -I"D:\Documents\Arduino\libraries\RF24-master\utility" "D:\Documents\Arduino\libraries\RF24-master\RF24.cpp" -o "nul"
    "C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=106013 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" -I"D:\Documents\Arduino\libraries\RF24-master" -I"D:\Documents\Arduino\libraries\RF24-master\utility" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src\SPI.cpp" -o "nul"
    "C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=106013 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" -I"D:\Documents\Arduino\libraries\RF24-master" -I"D:\Documents\Arduino\libraries\RF24-master\utility" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "D:\Documents\Arduino\libraries\RF24-master\RF24.cpp" -o "nul"
    "C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=106013 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" -I"D:\Documents\Arduino\libraries\RF24-master" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "C:\Users\Rick\AppData\Local\Temp\VMBuilds\masterBackChat\uno\Debug\masterBackChat.cpp" -o "nul"
    "C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=106013 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" -I"D:\Documents\Arduino\libraries\RF24-master" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers\VM_DBG" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers\VM_DBG\utility" "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers\VM_DBG\VM_DBG.cpp" -o "nul"
    "C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=106013 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" -I"D:\Documents\Arduino\libraries\RF24-master" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers\VM_DBG" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers\VM_DBG\utility" "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers\VM_DBG\VM_mem_check.c" -o "nul"
    "C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=106013 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" -I"D:\Documents\Arduino\libraries\RF24-master" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers\VM_DBG" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers\VM_DBG\utility" "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers\VM_DBG\VM_mem_check_sam.cpp" -o "nul"
    "C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=106013 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" -I"D:\Documents\Arduino\libraries\RF24-master" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers\VM_DBG" "C:\Users\Rick\AppData\Local\Temp\VMBuilds\masterBackChat\uno\Debug\masterBackChat.cpp" -o "nul"
     
    Building variant ...
     
    Using previously compiled variant
     
    Building core ...
     
    Building libraries ...
    Using library RF24-master version 1.2.0 in folder D:\Documents\Arduino\libraries\RF24-master
    Using previously compiled file: C:\Users\Rick\AppData\Local\Temp\VMBuilds\masterBackChat\uno\Debug\RF24-master\RF24.cpp.o
    Using library SPI version 1.0 in folder C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI
    Using previously compiled file: C:\Users\Rick\AppData\Local\Temp\VMBuilds\masterBackChat\uno\Debug\SPI\SPI.cpp.o
    "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -Wall -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=106013 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" -I"D:\Documents\Arduino\libraries\RF24-master" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers\VM_DBG" -I"C:\Program Files (x86)\Arduino\libraries" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers" -I"D:\Documents\Arduino\libraries" -I"D:\Documents\Arduino\libraries\RF24-master\utility" "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers\VM_DBG\VM_DBG.cpp" -o "C:\Users\Rick\AppData\Local\Temp\VMBuilds\masterBackChat\uno\Debug\VM_DBG\VM_DBG.cpp.o" -DVM_DEBUG -DVM_DEBUG_ENABLE=1 -DVM_DEBUG_BANDWIDTH_THROTTLE_MS=33 -DVM_DEBUGGER_TYPE_HARDWARESERIAL=0 -DVM_DEBUGGER_TYPE_SOFTWARESERIAL=1 -DVM_DEBUGGER_TYPE_FASTSERIAL=2 -DVM_DEBUGGER_TYPE_USB=3 -DVM_DEBUGGER_TYPE_TEENSY=4 -DVM_DEBUGGER_TYPE_UART=5 -DVM_DEBUGGER_TYPE_USART=6 -DVM_DEBUGGER_TYPE_USBSERIAL=7 -DVM_DEBUGGER_TYPE_TTYUART=8 -DVM_DEBUGGER_TYPE_NET_CONSOLE=9 -DVM_DEBUGGER_TYPE_Uart=10 -DVM_DEBUGGER_TYPE_COSA=11 -DVM_DEBUGGER_TYPE_CDCSerialClass=12 -DVM_DEBUGGER_TYPE_HARDWARESERIAL1=13 -DVM_DEBUGGER_TYPE_HARDWARESERIAL2=14 -DVM_DEBUGGER_TYPE_HARDWARESERIAL3=15 -DVM_DEBUGGER_TYPE_NET_UDP=16 -DVM_DEBUGGER_TYPE=VM_DEBUGGER_TYPE_HARDWARESERIAL -DVM_DEBUG_BREAKPAUSE
    "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -Wall -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=106013 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" -I"D:\Documents\Arduino\libraries\RF24-master" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers\VM_DBG" -I"C:\Program Files (x86)\Arduino\libraries" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers" -I"D:\Documents\Arduino\libraries" -I"D:\Documents\Arduino\libraries\RF24-master\utility" "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers\VM_DBG\VM_mem_check_sam.cpp" -o "C:\Users\Rick\AppData\Local\Temp\VMBuilds\masterBackChat\uno\Debug\VM_DBG\VM_mem_check_sam.cpp.o" -DVM_DEBUG -DVM_DEBUG_ENABLE=1 -DVM_DEBUG_BANDWIDTH_THROTTLE_MS=33 -DVM_DEBUGGER_TYPE_HARDWARESERIAL=0 -DVM_DEBUGGER_TYPE_SOFTWARESERIAL=1 -DVM_DEBUGGER_TYPE_FASTSERIAL=2 -DVM_DEBUGGER_TYPE_USB=3 -DVM_DEBUGGER_TYPE_TEENSY=4 -DVM_DEBUGGER_TYPE_UART=5 -DVM_DEBUGGER_TYPE_USART=6 -DVM_DEBUGGER_TYPE_USBSERIAL=7 -DVM_DEBUGGER_TYPE_TTYUART=8 -DVM_DEBUGGER_TYPE_NET_CONSOLE=9 -DVM_DEBUGGER_TYPE_Uart=10 -DVM_DEBUGGER_TYPE_COSA=11 -DVM_DEBUGGER_TYPE_CDCSerialClass=12 -DVM_DEBUGGER_TYPE_HARDWARESERIAL1=13 -DVM_DEBUGGER_TYPE_HARDWARESERIAL2=14 -DVM_DEBUGGER_TYPE_HARDWARESERIAL3=15 -DVM_DEBUGGER_TYPE_NET_UDP=16 -DVM_DEBUGGER_TYPE=VM_DEBUGGER_TYPE_HARDWARESERIAL -DVM_DEBUG_BREAKPAUSE
     
    Building project code ...
    "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -Wall -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=106013 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" -I"D:\Documents\Arduino\libraries\RF24-master" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers\VM_DBG" -I"C:\Program Files (x86)\Arduino\libraries" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ib20tfho.qgt\Micro Platforms\default\debuggers" -I"D:\Documents\Arduino\libraries" "C:\Users\Rick\AppData\Local\Temp\VMBuilds\masterBackChat\uno\Debug\masterBackChat.cpp" -o "C:\Users\Rick\AppData\Local\Temp\VMBuilds\masterBackChat\uno\Debug\masterBackChat.cpp.o" -DVM_DEBUG -DVM_DEBUG_ENABLE=1 -DVM_DEBUG_BANDWIDTH_THROTTLE_MS=33 -DVM_DEBUGGER_TYPE_HARDWARESERIAL=0 -DVM_DEBUGGER_TYPE_SOFTWARESERIAL=1 -DVM_DEBUGGER_TYPE_FASTSERIAL=2 -DVM_DEBUGGER_TYPE_USB=3 -DVM_DEBUGGER_TYPE_TEENSY=4 -DVM_DEBUGGER_TYPE_UART=5 -DVM_DEBUGGER_TYPE_USART=6 -DVM_DEBUGGER_TYPE_USBSERIAL=7 -DVM_DEBUGGER_TYPE_TTYUART=8 -DVM_DEBUGGER_TYPE_NET_CONSOLE=9 -DVM_DEBUGGER_TYPE_Uart=10 -DVM_DEBUGGER_TYPE_COSA=11 -DVM_DEBUGGER_TYPE_CDCSerialClass=12 -DVM_DEBUGGER_TYPE_HARDWARESERIAL1=13 -DVM_DEBUGGER_TYPE_HARDWARESERIAL2=14 -DVM_DEBUGGER_TYPE_HARDWARESERIAL3=15 -DVM_DEBUGGER_TYPE_NET_UDP=16 -DVM_DEBUGGER_TYPE=VM_DEBUGGER_TYPE_HARDWARESERIAL -DVM_DEBUG_BREAKPAUSE
     
    masterBackChat.ino: In function void greet(const uint8_t*)
    Error compiling project sources
    Debug build failed for project 'masterBackChat'
     
    masterBackChat.ino: 683:6: error: the value of 'SLAVE_1' is not usable in a constant expression
       case SLAVE_1
    masterBackChat.ino:61: note  SLAVE_1 was not declared constexpr
       const uint8_t SLAVE_1[] = { 0xBB, 0x00, 0x00, 0x00, 0x00 }
    masterBackChat.ino: 683:6: warning: invalid conversion from 'const uint8_t* {aka const unsigned char*}' to 'int' [-fpermissive]
       case SLAVE_1
     
    masterBackChat.ino: 683:6: error: conversion from pointer type 'const uint8_t (*)[5] {aka const unsigned char (*)[5]}' to arithmetic type 'int' in a constant-expression
     
    masterBackChat.ino: 686:6: error: the value of 'SLAVE_2' is not usable in a constant expression
       case SLAVE_2
    masterBackChat.ino:62: note  SLAVE_2 was not declared constexpr
       const uint8_t SLAVE_2[] = { 0xCC, 0x00, 0x00, 0x00, 0x00 }
    masterBackChat.ino: 686:6: warning: invalid conversion from 'const uint8_t* {aka const unsigned char*}' to 'int' [-fpermissive]
       case SLAVE_2
     
    masterBackChat.ino: 686:6: error: conversion from pointer type 'const uint8_t (*)[5] {aka const unsigned char (*)[5]}' to arithmetic type 'int' in a constant-expression

  5. #5
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,659
    Oh, your case constants are arrays.

    No you can't do that.

    Code:
    if ( memcmp(slave,SLAVE_1,5) == 0 ) {
      slave1purchased = true;
    }
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  6. #6
    Registered User
    Join Date
    Feb 2017
    Posts
    4
    Thanks doesn't seem enough, Salem.
    In the space of a couple of hours you put to an end four weeks of hair-tearing frustration.
    Thanks again.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 3
    Last Post: 05-17-2016, 06:35 AM
  2. array of ptrs vs constant ptr to an first element of array
    By monkey_c_monkey in forum C Programming
    Replies: 5
    Last Post: 08-30-2012, 11:39 PM
  3. Syntax for constant array of array pointers
    By BMintern in forum C Programming
    Replies: 4
    Last Post: 05-14-2008, 08:21 AM
  4. Replies: 7
    Last Post: 09-26-2006, 12:58 AM

Tags for this Thread