Obecnie pracuję z systemami osadzonymi i zastanawiam się, jak zaimplementować ciągi w mikroprocesorze bez systemu operacyjnego. Do tej pory używam idei, że NULL kończy wskaźniki wskaźników i traktuje je jako ciągi znaków, w których NULL oznacza koniec. Wiem, że jest to dość powszechne, ale czy zawsze możesz na to liczyć?
Powodem, dla którego pytam, jest to, że w pewnym momencie zastanawiałem się nad użyciem systemu operacyjnego w czasie rzeczywistym i chciałbym ponownie wykorzystać jak najwięcej mojego obecnego kodu. Czy wobec różnych dostępnych opcji mogę się spodziewać, że łańcuchy będą działać tak samo?
Pozwólcie, że będę bardziej konkretny w mojej sprawie. Wdrażam system, który pobiera i przetwarza polecenia przez port szeregowy. Czy mogę zachować ten sam kod przetwarzania poleceń, a następnie oczekiwać, że obiekty łańcuchowe utworzone w systemie RTOS (który zawiera polecenia) zostaną zakończone na NULL? Czy może byłoby inaczej w zależności od systemu operacyjnego?
Aktualizacja
Po zapoznaniu się z tym pytaniem ustaliłem, że nie odpowiada ono dokładnie na to, o co pytam. Samo pytanie dotyczy tego, czy należy zawsze podawać długość łańcucha, co jest zupełnie inne niż to, o które pytam, i chociaż niektóre odpowiedzi zawierały przydatne informacje, nie są to dokładnie to, czego szukam. Odpowiedzi tam wydawały się uzasadniać, dlaczego lub dlaczego nie kończyć łańcucha ze znakiem zerowym. Różnica w stosunku do tego, o co pytam, polega na tym, czy mogę mniej więcej oczekiwać, że wrodzone ciągi różnych platform zakończą swoje ciągi zerowe, bez konieczności wychodzenia i wypróbowania każdej platformy, jeśli ma to sens.