Intereting Posts
Ошибка LNK1561: точка входа должна быть определена C – значение wait (NULL) при выполнении fork () параллельно Почему C стандартная библиотечная функция `strchr` возвращает указатель на не-const, если задано` const char * `как первый аргумент? Запись в выходной файл в c MPI Установка размера массива внутри структуры со значением другого значения внутри одной и той же структуры, в C Проектирование очереди в качестве общей памяти GCC: разрешить перегруженные функции в C99 Различает ли между подписанным и unsigned int текущий бит-шаблон переменной в памяти? Что такое параметр dev_id в request_irq? Какой диалект C является Objective-C «строгим надмножеством»? Более быстрый подход к проверке для всего нуля буфера в C? Как объявить 2D-c-массивы динамически в Cython Ссылаясь на «C – помощь, чтобы понять, как написать функцию внутри функции (list_map)», Почему программы, написанные на Ассамблее чаще всего? Встроенный C: регистрирует доступ

time.h работает в C ++ не в C

Код:

#include "stdafx.h" #include "stdio.h" #include "math.h" #include "stdlib.h" #include "time.h" int main() { time_t start, end; time (&start); int i; double dif; /*int serie[100000];*/ /* int *serie = malloc( sizeof(int) ); for (i = 0; i <= 100000; i++) { *serie(i)=rand(); printf("%d \n", serie[i]); } */ time (&end); dif = difftime (end, start); printf ("Time of execution is: %f\n", dif ); getchar(); return 0; } 

Введение: (нет необходимости читать)

Я знал немного C ++ около трех лет назад. Я решил изучить C, чтобы создать «быстрый» алгоритм подмножества подмножеств. Это была простая программа для изучения C. Проблема заключается в создании случайных чисел и времени. Этот код действительно работает, когда я скомпилирован по умолчанию или C ++ с Visual Studio, но я решил сделать это на C, и я хотел создать динамический массив.

Кажется, что нет new в C. Мы должны использовать malloc , но для компиляции malloc я думаю, что он должен быть скомпилирован в C. В C ++ он дает мне эту ошибку:

 cannot convert from 'void *' to 'int *' 

Во всяком случае, бывает так, что я решил написать на C, поэтому логично скомпилировать в C. Я выбрал функцию time для измерения программы, мне нравится больше, чем clock потому что я не знаю, сколько процессоров работает.

Вопрос:

Код, как он выше, с комментариями компилируется отлично на C ++, но в C он не компилируется. В частности, эта строка:

 time (&start); 

дает мне эту ошибку:

 syntax error : missing ';' before 'type' 

Я просто хочу вычислить время начала и время окончания, а затем вычесть их с помощью difftime как я успешно сделал на C ++.

Бьюсь об заклад, что ваш компилятор C по умолчанию использует правило, что объявления переменных должны быть в начале блока.

У вас есть ваш вызов time(&start) до int i . Это нормально в C ++, но не в C. Чтобы быть конкретным, все переменные должны быть объявлены перед любым программным кодом во всех версиях C до C99. В стандарте C 1999 года правило изменилось как на C ++, и вы можете смешивать объявления кода и переменных.

Если у вас есть компилятор C99 или параметр компилятора, который разрешает правила C99, все равно этого не делать, потому что он не надежно переносится. И даже в C99 нет много веских причин смешать переменные и код в любом случае. Единственный, о котором я могу думать, это массив переменной длины C99, который требует кода для вычисления желаемой длины.