Ubocznych w przypadkach, gdy do makra przekazujemy

Ubocznych w przypadkach, gdy do makra przekazujemy skomplikowane wyrażenia. Na przykład, jeśli zdefiniujemy makro MAX jako:

#define MAX(x,y) x > y ? x : y

i przekażemy mu wartości 5 oraz 7, wtedy to makro będzie działało tak, jak oczekujemy. Jeśli jednak przekażemy mu bardziej skomplikowane wyrażenia, otrzymamy niepożądane rezultaty, tak jak ilustruje listing 21.2.

Listing 21.2. Użycie nawiasów w makrach
0: // Listing 21.2 Rozwijanie makr
1: #include
2: using namespace std;
3:
4: #define CUBE(a) ( (a) * (a) * (a) )
5: #define THREE(a) a * a * a
6:
7: int main()
8: {
9: long x = 5;
10:

Random Posts




You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply