mati220 Temat założony przez niniejszego użytkownika |
Makro wyświetlające dane » 2016-01-04 19:48:43 Witam. Mam tym razem pytanie tego typu :) : W zadaniu napisane jest że mam napisać makro które przyjmuje dwa argumenty. Jednym jest wyrażenie dowolnego typu a drugim ciąg formatujący tego wyrażenia. W makrze mam wyświetlić coś w stylu "Wartość (nazwa_wyrażenia) jest równa (wartość_wyrażenia)." Pytanie brzmi: W jaki sposób przekazać ciąg formatujący dla dowolnego typu żeby potem w printf'ie móc wyświetlić wartość tej zmiennej? |
|
pekfos |
» 2016-01-04 20:05:16 Zamiast pytać, po prostu to napisz. Z tego co widzę, nie masz z tym jeszcze żadnego problemu. |
|
mati220 Temat założony przez niniejszego użytkownika |
» 2016-01-04 20:36:46 Właśnie jak? :) Bo jeśli przekażę wyrażenie typu int to w printf'ie będę musiał napisać %d a chyba chodzi o to żeby ten ciąg był zastępowany tym co przekażę przez argument. Do tej pory napisałem nic odkrywczego: #include <stdio.h>
#define MAKRO(Liczba) do{\ printf("Wyrazenie %s ma wartosc %d w linii nr %d w pliku %s\n",#Liczba,(Liczba),__LINE__,__FILE__);\ }while(0)
int main() { int a = 5; MAKRO( a ); return 0; }
|
|
pekfos |
» 2016-01-04 22:20:26 napisać makro które przyjmuje dwa argumenty. Jednym jest wyrażenie dowolnego typu a drugim ciąg formatujący tego wyrażenia. |
Z czym ty masz problem? |
|
mati220 Temat założony przez niniejszego użytkownika |
» 2016-01-05 08:27:02 Problem mam tego typu, że nie wiem jak przekazać do funkcji ciąg formatujący tej zmiennej. Jako co go mam przekazać? Jako stringa czy inaczej jakoś? #include <stdio.h>
#define MAKRO(Liczba,ciag) do{\ printf("Wyrazenie %s ma wartosc >>>JAK_TO_MAM_TU_WPISAC<<< w linii nr %d w pliku %s\n",#Liczba,(Liczba),__LINE__,__FILE__);\ }while(0)
int main() { int a = 5; MAKRO( a, JAKO_CO_MAM_TEN_ARGUMENT_PRZEKAZAC ); return 0; } Albo ja jakoś źle myślę albo jestem nieogarnięty :D |
|
darko202 |
» 2016-01-05 08:49:41 |
|
carlosmay |
» 2016-01-05 11:09:54 #include <cstdio> #include <cstdlib> #define MAKRO(c, n){printf("%s %i", c, n);}
int main() { char * slowo = "Kilo to iloczyn jednostki x "; int mnoznik = 1000; MAKRO( slowo, mnoznik ); printf( "\n" ); MAKRO( "Mega to iloczyn jednostki x ", 1000000 ); printf( "\n" ); }
Reszta jest w linku @darko202 |
|
mati220 Temat założony przez niniejszego użytkownika |
» 2016-01-05 18:21:01 Chyba trochę się nie rozumiemy. Chodzi mi o to by przekazując wyrażenie do tego makra w każdej chwili mógł zmienić typ zmiennej nie zmieniając nic w makrze.
carlosmay w twoim kodzie zmieniając typ zmiennej np na float makro już nie wyświetli wyrażenia poprawnie i kompilator wypisze ostrzeżenie. |
|
« 1 » 2 |