Предварительная обработка 'c' - это процесс замены макросов текстом из их определений. некоторые операции, такие как ##, позволяют добавлять свой аргумент в виде текста в определения. Итак, все сделано еще до начала компиляции.
В результате в вашем случае FUN(fun,i)
будет подставлено в виде текста и формы funi
. Единственный ограниченный способ создания имен функций, которые вы хотите, - это использовать реальные текстовые значения или другие макросы. Вот 2 примера, которые будут работать с предварительной обработкой:
FUN(fun, 0)(1);
или
#define I 0
FUN(fun, I)(1);
В последнем случае I
является самим макросом, поэтому он также работает. (всегда полезно называть имя макроса заглавными буквами).
NSDate *start = [NSDate date];
// do stuff...
NSTimeInterval timeInterval = [start timeIntervalSinceNow];
timeInterval
- это разница между началом и временем в секундах с точностью до миллисекунды.
Для измерения времени прохождения (например, GetTickCount) также взгляните на mach_absolute_time и вопросы и ответы Apple: http : //developer.apple.com/qa/qa2004/qa1398.html
.использовать функцию timeIntervalSince1970 класса NSDate, как показано ниже:
double start = [startDate timeIntervalSince1970];
double end = [endDate timeIntervalSince1970];
double difference = end - start;
в основном это то, что я использую для сравнения разница в секундах между двумя разными датами. также проверьте эту ссылку здесь
Используйте метод timeIntervalSinceDate
NSTimeInterval secondsElapsed = [secondDate timeIntervalSinceDate:firstDate];
NSTimeInterval
- это просто double
, определите в NSDate
следующим образом:
typedef double NSTimeInterval;