Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Makro wyświetlające dane

Ostatnio zmodyfikowano 2016-01-16 20:23
Autor Wiadomość
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?
P-142855
pekfos
» 2016-01-04 20:05:16
Zamiast pytać, po prostu to napisz. Z tego co widzę, nie masz z tym jeszcze żadnego problemu.
P-142856
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:

C/C++
#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;
}
P-142869
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?
P-142886
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ś?

C/C++
#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
P-142895
darko202
» 2016-01-05 08:49:41
z http://www.cprogramming.com​/tutorial/cpreprocessor.html

C/C++
//definicja
#define PRINT_TOKEN(token) printf(#token " is %d", token)
//wywołanie
PRINT_TOKEN( x + y );
P-142897
carlosmay
» 2016-01-05 11:09:54
C/C++
#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
P-142902
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.
P-142914
« 1 » 2
  Strona 1 z 2 Następna strona