我在使用 Nick Gammon's Regexp library 时遇到此错误.错误如下:
libraries/Regexp/Regexp.cpp.o:(.text._ZL5errorc+0x4): undefined reference to `longjmp' libraries/Regexp/Regexp.cpp.o: In function `error': /Users/jaiprak/projects/Arduino/libraries/Regexp/Regexp.cpp:640: undefined reference to `longjmp' libraries/Regexp/Regexp.cpp.o: In function `max_expand': /Users/jaiprak/projects/Arduino/libraries/Regexp/Regexp.cpp:640: undefined reference to `setjmp' libraries/Regexp/Regexp.cpp.o: In function `MatchState::Match(char const*, unsigned int)': /Users/jaiprak/projects/Arduino/libraries/Regexp/Regexp.cpp:640: undefined reference to `setjmp' collect2: error: ld returned 1 exit status exit status 1 Error compiling for board Generic ESP8266 Module.
And this is my Arduino code:
#include <Regexp.h>
// called for each match
void match_callback (const char * match, // matching string (not null-terminated)
const unsigned int length, // length of matching string
const MatchState & ms) // MatchState in use (to get captures)
{
char cap [10]; // must be large enough to hold captures
Serial.print ("Matched: ");
Serial.write ((byte *) match, length);
Serial.println ();
for (byte i = 0; i < ms.level; i++)
{
Serial.print ("Capture ");
Serial.print (i, DEC);
Serial.print (" = ");
ms.GetCapture (cap, i);
Serial.println (cap);
} // end of for each capture
} // end of match_callback
void setup ()
{
Serial.begin (115200);
Serial.println ();
unsigned long count;
// what we are searching (the target)
char buf [100] = "The quick brown fox jumps over the lazy wolf";
// match state object
MatchState ms (buf);
// original buffer
Serial.println (buf);
// search for three letters followed by a space (two captures)
count = ms.GlobalMatch ("(%a+)( )", match_callback);
// show results
Serial.print ("Found ");
Serial.print (count); // 8 in this case
Serial.println (" matches.");
} // end of setup
void loop () {}
最佳答案
setjmp
和 longjump
是 libc 的正常部分,ESP8266 core for Arduino 不使用它。 .
#910 中描述了此问题.评论建议在 libc_replacements.c 中实现它没有说明这是如何实现的。
关于c++ - 在 Arduino IDE 中使用正则表达式库时未定义对 `longjmp' 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39515570/