This compiles, but I'm not sure if it works:
const __FlashStringHelper* s1;
const __FlashStringHelper* s2;
const __FlashStringHelper* s3;
int strcmp(const __FlashStringHelper* s1, const __FlashStringHelper* s2);
void setup() {
Serial.begin(115200);
s1 = F("same");
s2 = F("different");
s3 = F("same");
if (strcmp(s1, s2) == 0)
Serial.println("s1, s2 same");
else
Serial.println("s1, s2 different");
if (strcmp(s1, s3) == 0)
Serial.println("s1, s3 same");
else
Serial.println("s1, s3 different");
if (strcmp(s2, s3) == 0)
Serial.println("s2, s3 same");
else
Serial.println("s2, s3 different");
}
void loop() {}
int strcmp(const __FlashStringHelper* s1, const __FlashStringHelper* s2) {
return strcmp_P(reinterpret_cast<const char*>(s1), reinterpret_cast<const char*>(s2));
}