Исходники
Статьи
Языки программирования
.NET Delphi Visual C++ Borland C++ Builder C/С++ и C# Базы Данных MySQL MSSQL Oracle PostgreSQL Interbase VisualFoxPro Веб-Мастеру PHP HTML Perl Java JavaScript Протоколы AJAX Технология Ajax Освоение Ajax Сети Беспроводные сети Локальные сети Сети хранения данных TCP/IP xDSL ATM Операционные системы Windows Linux Wap Книги и учебники
Скрипты
Магазин программиста
|
Макросы в C/С++Макросы - это препроцессорные "функции" , т.е. лексемы, созданные с помощью директивы #define, которые принимают параметры подобно функциям. После директивы #define указывается имя макроса, за которым в скобках (без пробелов) параметры, отделенные запятыми и определение макроса, отделенное пробелом. Например: #define ADD(x,y) x = x + y если после этого написать: int a=2; int b=3; ADD(a,b); cout<<"a= "<<A<<" b="<<b; то получим: a=5 b=3 Параметры макросов лучше писать в скобках, хотя это не обязательно, но иногда отсутствие скобок приводит к неожиданным результатам. Вот пример, надеюсь все ясно, объяснять ничего не буду. #define MACRO1(x) x * x #define MACRO2(x) ( x ) * ( x ) int a =2; int b=3; cout<<" macro 1- ? <<MACRO1(a+b); cout<<?nmacro 2- ?<<MACRO2(a+b); #define CALLFUNC(x) My##x##Function() и вызывать функции MyFirstFunction(), MySecondFunction() ,MyThirdFunction() и т.д. макросом CALLFUNC CALLFUNC(First); CALLFUNC(Second); У многих компиляторов есть ряд встроенных макросов. Наиболее распостраненные - __DATE__ , __TIME__ , __LINE__ , __FILE__ , которые заменяются текущей (на время компиляции) датой, временем, номером строки и именем исходного файла соответственно. Встроенные макросы можно использовать без объявления. Пример: cout<<"Compiled on "<<__DATE__<<" "<<__TIME__ ; Результат: compiled on Sep 52001 23:49:55 |
Форум Программиста
Новости Обзоры Магазин Программиста Каталог ссылок Поиск Добавить файл Обратная связь Рейтинги
|