Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania
Viewing all articles
Browse latest Browse all 65225

Funkcja wykonywana w preprocesorze / przez preprocesor

$
0
0

- Jak w opisie potrzebuje stworzyć funkcję realizowaną przez preprocesor.   //nie znam składni takich funkcji
- Argumentem funkcji ma być łańcuch znaków w UTF-8     np. L"йфяцычкмИ qwerty"
- Funkcja ma zwracać normalny łańcuch char-ów
 

przykładowe wywołanie :    parseRU (L"йфяцычкмИ qwerty")

preprocesor zamiast tego ma wstawić do kodu:   "cos tam qwerty"

i dopiero ma nastąpić kompilacja.

 

//z tym poniżej  raczej sobie poradzę
- Sposób w jaki wszystkie znaki nietypowe (kod znaku powyżej 255) mają zostać przekonwertowane.

kod_nowego_znaku = kod_znaku_nietypowego - 850
if (kod_nowego_znaku > 255) kod_nowego_znaku=63;

 

//informacje nie kluczowe, mniej związane z tematem 

-poniżej wrzucam moją przykładową realizację funkcji w standardowy sposób.
-niestety nie może ona zostać w takiej postaci ponieważ wszystkie takie łańcuchy których będzie wiele w programie ostatecznie zostaną umieszczoną w pamięci RAM  mikrokontrolera i ją w sporej części zapełnią.

Dla zwykłych łańcuchów jest przewidziane makro PSTR("lancuch") zapobiega zapisaniu łańcucha do pamięci RAM i zwraca adres do miejsca w pamięci flash .  Dla łańcuchów ze znakami w Unicode nie znalazłem takiego makra.

- druga sprawa po co mikrokontroler ma przetwarzać te łańcuchy skoro z góry są one znane jeszcze przed kompilacją  , lepiej żeby to zrobił komputer i gotowe  łańcuchy skompilował.

void parseRU(char *dst, wchar_t *src) {
		uint8_t i;
		for(i=0; src[i]!=0; i++){
			if (src[i]>255) dst[i]= (src[i]-850 > 255) ? 63 : src[i]-850; 
			else dst[i]=src[i];
		}
		dst[i]=0;
	}
	
    //przykładowe wywołanie
	char buf[50];
	parseRU(buf, L"йфяцычкмИ qwerty"); 
	lcdTextRot(buf, 70 , 7 , 90);

 


Viewing all articles
Browse latest Browse all 65225

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>