|
|
|
| Здравствуйте
#include<iostream.h>
#define add(a, b) (a) * (b)
int main()
{
int int1 = 3;
int int2 = 4;
cout << add(int1, int2) << endl;;
long lng1 = 5;
long lng2 = 6;
cout << add(lng1, lng2) << endl;
double dbl1 = 1.1212;
double dbl2 = 34.43434;
cout << add(dbl1, dbl2) << endl;
int k;
cin >> k;
return 0;
} |
* А большие функции так можно писать? Если посмотреть макросы - это хорошее средство для борьбы со строгой типизацией.
* Когда стоит использовать макрос, а когда функцию? | |
|
|
|
|
|
|
|
для: antf
(11.11.2009 в 15:18)
| | Вообще макросами не рекомендуют увлекаться - очень сложно контролировать ошибки. Да и сама борьба со сторой типизацией в C++ не приветствуется, так как этот стиль был введен не просто так - слишком здорово от её отствия страдали C-программы.
Это такой инструмент для замены одной строки другой в файле - используется, как правило, для формирования отладочной версии или версий предназначенных для разных платформ/операционных систем. При программировании логики - макросы стараются избегать. | |
|
|
|
|
|
|
|
для: antf
(11.11.2009 в 15:18)
| | ну макросы улучшают жизнь, это мое мнение. например
#define FOR(i, a, b) for(int i=a; i<b; i++)
#define SZ(a) (int)(a).size()
#define PB push_back
int main()
{
vector<int> a;
FOR(i, 0, 10) a.PB(i*I);
FOR(i, 0, SZ(a)) cout << a[i] << endl;
}
|
просто часто используемые элементы можно заменить макросами.
например, очистка массива
#define FILL(a, b) memset(a, b, sizeof(a))
int a[100], b[120];
int main()
{
FILL(a, 0);
FILL(b, -1);
}
|
ну и так далее | |
|
|
|