Klingt harmlos genug. Mit Ausnahme der Bänder, die auf einem belarussischen Volksstickmuster basieren, sind rot-weiße Farben — Farben, die zum Synonym für die seit langem schwelende Opposition des Landes gegen Präsident Alyaksandr Lukaschenko und seine diktatorische 20-jährige Herrschaft geworden sind. Die Flagge der Republik, zwei horizontale weiße Streifen, die einen einzigen Streifen Rot verkleinern, wird seitdem von der politischen Opposition im postsowjetischen Weißrussland umarmt, was sich über die Marginalisierung der belarussischen Sprache und Kultur durch Lukaschenko, der Russisch spricht, ärgert. Auch der Bereich `A` – `Z` in ASCII ist eine ununterbrochene Sequenz von 26 alphabetischen Großbuchstaben. Das trifft bei EBCDIC nicht zu. Auch nicht für “a” bis “z”. Aber `0` – `9` ist eine ungebrochene Reichweite in beiden Systemen. Nehmen Sie nichts über andere Bereiche an. (Beachten Sie, dass die spezielle Handhabung von Bereichen in regulären Ausdrucksmustern und Transliterationen perl-Code erscheinen lässt, dass die oben genannten Bereiche alle ungebrochen sind.) Doch Lukaschenkos Abneigung gegen die Farben anderer Länder verblasst neben seiner Abneigung gegen rot-weiß der weißrussischen Opposition, die seit Jahren von der öffentlichen Ausstellung ausgeschlossen wird. Vielleicht einfach, dass Ihre Funktion nicht in erster Linie exportiert werden musste. Perl hat eine lange und nicht so glorreiche Geschichte des Exports von Funktionen, die es nicht haben sollte. Weitere Informationen finden Sie unter Formatierter Druck von Size_t und SSize_t in perlguts. Verknüpfen Sie dynamische Erweiterungen mit AddressSanitizer.

Sie müssen -shared manuell angeben, da die Verwendung von -Alddlflags=-shared verhindert, dass Configure einen Standardwert für lddlflags festlegt, der normalerweise -shared enthält (zumindest unter Linux). Dieser Code ist nur für die Entwicklung bestimmt und kann nicht einmal für alle Unix-Varianten portierbar sein. Außerdem ist es eine 80%-Lösung, da es nicht in der Lage ist, alle Ops nur lesen zu lassen. Insbesondere gilt dies nicht für Op-Platten, die zu BEGIN-Blöcken gehören. Perl-Quelle spielt nach ANSI C89-Regeln: keine C99-Erweiterungen (oder C++). Sie interessieren sich nicht dafür, dass eine bestimmte Plattform Perl gebrochen hat? Ich höre, dass es immer noch eine starke Nachfrage nach J2EE-Programmierern gibt. Coverity (www.coverity.com/) ist ein Produkt ähnlich wie lint und als Testbed für ihr Produkt überprüfen sie regelmäßig mehrere Open-Source-Projekte, und sie geben Konten an Open-Source-Entwickler an die Fehlerdatenbanken. Dass es außer den, die Sie kennen, keine anderen Felder gibt, die Sie kennen, ist Coverity-Setup für das perl5-Projekt: scan.coverity.com/projects/perl5 Technisch gesehen ist das Gießen zwischen Funktionszeigern und Datenzeigern unsportlich und undefiniert, aber praktisch scheint es zu funktionieren, aber Sie sollten die Makros FPTR2DPTR() und DPTR2FPTR() verwenden. Manchmal können Sie auch Spiele mit Gewerkschaften spielen. Verwenden Sie nicht strcpy() oder strcat() oder strncpy() oder strncat() oder strncat() Wenn Sie wirklich nur einfache Byte-Zeichenfolgen wünschen, verwenden Sie stattdessen my_snprintf() und my_vsnprintf(), die versuchen, snprintf() und vsnprintf() zu verwenden, wenn diese sichereren APIs verfügbar sind.

Wenn Sie etwas Phantasierekes als eine einfache Bytezeichenfolge wünschen, verwenden Sie Perl_form () oder SVs und Perl_sv_catpvf() . Verwenden Sie stattdessen die Definitionen IV, UV, IVSIZE, I32SIZE usw. Vermeiden Sie Dinge wie I32, weil sie nicht garantiert genau 32 Bits sein, sie sind mindestens 32 Bits, noch sind sie garantiert int oder lang sein. Wenn Sie wirklich explizit 64-Bit-Variablen benötigen, verwenden Sie I64 und U64, aber nur, wenn sie von HAS_QUAD bewacht werden. Das -Wtraditional ist ein weiteres Beispiel für die lästige Tendenz von gcc, viele Warnungen unter einem Schalter zu bündeln (es wäre unmöglich, in der Praxis bereitzustellen, weil es sich viel beschweren würde), aber es enthält einige Warnungen, die vorteilhaft wären, um sie selbst verfügbar zu haben, wie die Warnung vor Zeichenfolgenkonstanten in Makros, die die Makroargumente enthalten: Dies verhielt sich vor ANSI anders als in ANSI, und einige C-Compiler sind immer noch im Übergang.