Макросы (относительно) простые замены так, когда вы пишете:
#define PI 3.14;
circle = 2 * PI * r;
это фактически заканчивается как:
circle = 2 * 3.14; * r;
эффективно два заявления:
circle = 2 * 3.14;
* r;
Эта последняя строка будет вполне корректным выражением (alb это не очень полезно), если r
были указателем некоторого описания. Однако, учитывая, что это двойной, именно там вы получаете незаконную косвенность.
Использование макросов - это то, что вы обычно должны избегать в наши дни, за исключением особых обстоятельств. Использование их для предоставления встроенных функций было в основном связано с ключевым словом inline
(«в основном», потому что ключевое слово inline
- это всего лишь предложение).
Кроме того, с помощью ключевого слова const
использование его для обеспечения констант может быть сделано лучше (с преимуществом полной поддержки типов и обычно более эффективной отладки).
Другими словами, ваша постоянная PI
будет лучше записать как что-то вроде:
const double PI = 3.141592653589;
Просто о единственном месте, я использую предварительно процессор в настоящее время является для условной компиляции.
Как и в сторону, вы, вероятно, имел в виду, а не circumference
circle
. Первая - это длина вокруг внешней окружности, последняя на самом деле не является значением длины.
Лучшая политика заключается в том, чтобы прекратить использование #define –
@DavidHeffernan спасибо, я следую учебникам .. – karaxuna
Сделать целью, чтобы избежать #define, если возможно по-человечески. Эта политика послужит вам хорошо. –