Is it possible for a function/method to know if a constant array that has been passed in is in flash or RAM? If I have a method or function that receives a constant array that is in RAM, the array is declared like this: ```const uint8_t MY_ARRAY[] = { 1, 2, 3, 4 };``` gets passed into a method or function like this: ```MyFunction(MY_ARRAY);``` and the method or function can handle it like this: ``` void MyFunction(const uint8_t *MY_ARRAY) { uint8_t secondElement = MY_ARRAY[1]; ... ``` However, if the array is in Flash (because it's a constant array, so that's where it should go), then the declaration adds PROGMEM: ```const uint8_t PROGMEM MY_ARRAY[] = { 1, 2, 3, 4 };``` The pass looks the same: ```MyFunction(MY_ARRAY);``` And the function declaration looks the same but it needs to use pgm_read_byte_near to get the correct values back: ``` void MyFunction(const uint8_t *MY_ARRAY) { uint8_t secondElement = pgm_read_byte_near(MY_ARRAY+1); ... ``` How can the receiving method know if the array is in flash (PROGMEM) or RAM (no PROGMEM) so it knows to use pgm_read_byte_near or not? Ideally I'd like a compiler error, but the type is the same (both are const arrays of uint8_t). If pgm_read_byte_near is used when it shouldn't be, or it's not used when it should be, the results are garbage. Some relevant questions: [How to pass a static const (progmem) array to a function][1] [RAM usage question: PROGMEM vs const vs #define][2] [Storing array in PROGMEM][3] [PROGMEM: do I have to copy data from flash to RAM for reading?][4] [1]: https://arduino.stackexchange.com/questions/25680/how-to-pass-a-static-const-progmem-array-to-a-function [2]: https://forum.arduino.cc/index.php?topic=79436.0 [3]: https://arduino.stackexchange.com/questions/16012/storing-array-in-progmem [4]: https://arduino.stackexchange.com/questions/4572/progmem-do-i-have-to-copy-data-from-flash-to-ram-for-reading