Jak poprawnie skonstruować makro?

0

Witam.
Z tego powodu, iż mój program przekracza dopuszczalny czas, postanowiłem pętlę, której często w nim używam wrzucić jako makro.
Pętla:

 for (int i = 0; i < 10; i++) {
		this->CNT[i] = CNT[i];
	}

Ma ona przepisywać wartości z jednej tablicy do drugiej.
Makro:

 #define FOR(unsigned)(tab1[], tab2[]) for(int i = 0; i < 10; i++) ((unsigned)(tab1[i]) = (unsigned)(tab2[i]))

Jestem jednak pewien, że jest ono źle sklecone więc proszę was o pomoc. Jeśli ktoś mógłby poprawić lub powiedzieć jak to zrobić poprawnie to będę wdzięczny.
Dziękuje i pozdrawiam.

1

A mogę wiedzieć do czego Ci to potrzebne? Generalnie w swoich projektach nigdy nie używaj tego typu konstrukcji bo to wprowadza niepotrzebny zamęt. Napisz normalna klasę lub funkcje. Poszukaj innej drogi do optymalizacji kodu.

1

I sądzisz, że to poprawi czas? Wiesz, co robi makro? Jak masz
#define pingwin 100
to preprocesor bierze sobie każde (prawie, np nie ma dostepu do c-stringów) pingwin i zamienia na 100. Rownie dobrze sa bys mogł to zrobic. Preprocesor działa przed kompilatorem, tak jakby "przygotowuje" kod dla kompilatora. Wiec nie bedziesz miał ani troche rożnicy w czasie.
Poza tym przy konstrukcji
#define a b ciąg znaków a nie moze miec białych znaków w srodku.
Rozwinięciem Twojej makrodefinicji bo tak to sie ładnie nazywa) jest
tab2[]) for(int i = 0; i < 10; i++) ((unsigned)(tab1[i]) = (unsigned)(tab2[i])) czyli wszystko to, co występuje po pierwszym białym znaku.

0

Swoją drogą zainteresuj sie danymi statycznymi w klasach, byc moze rozwiąże to Twoj problem.
Swoją drogą2: nie jestem pewien, ale wydaje mi sie, ze Twoja pętla nic nie robi.

0

Ok dzięki Panowie czyli rozumiem, że to nic nie przyspieszy? Skoro tak to poszukam jakichś innych sposobów. Może później wrzucę kod tutaj to coś ktoś podpowie?
Dzięki.
PS: W moim programie ta pętla coś robi uwierzcie mi. Tak na sucho to rzeczywiście trochę dziwnie wygląda, ale nie było potrzeby wrzucać całości.

0

Albo macie kod i treśc zadania:
http://ideone.com/oMvuPs - treść
http://ideone.com/8dKts7 - kod
Może wy obczaicie co tam źle zrobiłem, że mi wyskakuje naruszeni ochrony pamięci.
No i przekracza czas od czasu do czasu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1