C++ Arduino上的strncmp_P和strncmp_PF之间的差异?

C++ Arduino上的strncmp_P和strncmp_PF之间的差异?,c++,arduino,strncmp,C++,Arduino,Strncmp,Arduino上的strncmp_p和strncmp_PF有什么区别?我了解strncmp_F,但strncmp_PF的用途是什么?Arduino上有两个地址空间:SRAM和程序存储器(闪存) 您可以使用普通的“近”指针或特殊的“远”指针引用程序内存,以访问比通常可能访问的内存更多的内存(例如,近指针只能访问16位CPU上64KB的程序内存) strncmp\u p和strncmp\u PF都与程序内存中的字符串进行比较(与比较SRAM中两个字符串的strncmp相反),但是strncmp\u

Arduino上的strncmp_p和strncmp_PF有什么区别?我了解strncmp_F,但strncmp_PF的用途是什么?

Arduino上有两个地址空间:SRAM和程序存储器(闪存)

您可以使用普通的“近”指针或特殊的“远”指针引用程序内存,以访问比通常可能访问的内存更多的内存(例如,近指针只能访问16位CPU上64KB的程序内存)


strncmp\u p
strncmp\u PF
都与程序内存中的字符串进行比较(与比较SRAM中两个字符串的
strncmp
相反),但是
strncmp\u PF
采用远指针,而
strncmp
采用正常的近指针。这是唯一的区别。

所以在256KB闪存的Arduino Mega上,必须使用strncmp_PF而不是strncmp_p?@BrankoH:大概是的。@BrankoH这取决于数据的位置。通常,在ATXmega上,代码段中的数据位于代码之前。如果您有256kB的闪存,但只有高达64KB的常量数据,则不需要远数据指针。只有当数据超过这个界限时,你才需要小心。