Форум: Форум C++Разное
Новые темы: 00
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Макросы
 
 автор: antf   (11.11.2009 в 15:18)   письмо автору
 
 

Здравствуйте

#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;
}


* А большие функции так можно писать? Если посмотреть макросы - это хорошее средство для борьбы со строгой типизацией.
* Когда стоит использовать макрос, а когда функцию?

  Ответить  
 
 автор: cheops   (12.11.2009 в 18:12)   письмо автору
 
   для: antf   (11.11.2009 в 15:18)
 

Вообще макросами не рекомендуют увлекаться - очень сложно контролировать ошибки. Да и сама борьба со сторой типизацией в C++ не приветствуется, так как этот стиль был введен не просто так - слишком здорово от её отствия страдали C-программы.
Это такой инструмент для замены одной строки другой в файле - используется, как правило, для формирования отладочной версии или версий предназначенных для разных платформ/операционных систем. При программировании логики - макросы стараются избегать.

  Ответить  
 
 автор: AlMag   (21.11.2009 в 15:29)   письмо автору
 
   для: 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);
}


ну и так далее

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования