我有一個輸出文本到串行的板子。我需要將這些文本與我所知道的文本進行比較。本質上,我想要做strcmp(thestring,F("knownstring"))
,但似乎沒有采用FlashStringHelper *類型的strcmp版本。有strcmp_P使用const PROGMEM char *
,但這似乎是完全不同的事情。有人在我看到的Arduino論壇主題上建議通過使用閃存字符串progmem_read_byte (b, i)
來寫一個,但該函數實際上並不存在,並且最接近的等效(pgm_read_byte(b+i)
)似乎無法與FlashStringHelper一起使用* - 我得到的錯誤error: invalid use of incomplete type 'class __FlashStringHelper'
和error: forward declaration of 'class __FlashStringHelper'
,這暗示我已經做了一些認真錯!我幾乎要放棄並將字符串放入RAM中,但是arduino沒有太多內容,所以如果可能的話,我想避免這種情況。誰能幫忙?如何比較__FlashStringHelper *與Arduino上的char *?
1
A
回答
2
__FlashStringHelper
只是用於爲Flash字符串確定正確的重載函數/方法的特殊數據類型。
無論如何,因爲它是在RAM比較兩個字符串,但在包括<avr/pgmspace.h>
有其比較const char *
放在RAM與const char *
放在閃存(按照這個順序)的變體strcmp_P
你不能使用strcmp
。
所以,你可以使用:
strcmp_p(thestring, (const char*)F("knownstring"));
// or better:
strcmp_P(thestring, PSTR("knownstring"));
的F
宏基本上是:(__FlashStringHelper *)PSTR("...")
所以這是有點多餘投它回到const char*
在第一種情況。
相關問題
- 1. 如何比較int與char?
- 2. 如何比較字符陣列與arduino
- 3. const char *與==的比較
- 4. 如何比較字符串與const char *?
- 5. 如何比較strstr(LPCWSTR,CHAR *);
- 6. 如何比較char *和NSString?
- 7. Arduino的比較SD卡上的串now.unixtime
- 8. Arduino:如果比較參數
- 9. 比較的char *與字符串宏
- 10. 比較varchar和char
- 11. 我如何比較HKL和char []?
- 12. 比較int和char與鑄造
- 13. 將char與字符串進行比較
- 14. 將const char *與strcmp進行比較
- 15. Arduino - 如何將char *複製到char **中?
- 16. OpenERP的域:CHAR比較
- 17. 比較TCHAR []和的char []
- 18. 如何將Signed Char與文字常量進行比較?
- 19. 如何使用hash_map與char *並做字符串比較?
- 20. 如何將一個char數組與unsigned char數組進行比較?
- 21. 如何將一個char變量與另一個char變量進行比較?
- 22. C比較char和int
- 23. Char比較功能在C
- 24. 比較兩個char *平等
- 25. 在while循環比較CHAR
- 26. 比較arduino中的兩個雙變量
- 27. 如何比較「peewee.DateField」與「datatime.date」?
- 28. 如何比較與MATLAB
- 29. Drupal如何與SharePoint比較
- 30. 如何比較行與列?