2017-02-19 32 views
1

У меня есть программа, которая использует постоянные структуры для данных параметров (данные о транспортных средствах, такие как скорости передачи, вес и т. Д.).C - set return variable as const

Поскольку программа будет использоваться для разных моделей автомобилей, я хочу прочитать данные параметров из txt-файлов, вызвав функцию, которая возвращает структуры в качестве возвращаемых значений.

Можно ли объявить структуры как 'const' в моей основной программе? Я хотел бы сделать это, чтобы гарантировать, что в эти структуры не будут внесены изменения в прогресс.

Для получения дополнительной информации: при базовом применении кода данные параметров жестко закодированы. Поэтому постоянные структуры используются к настоящему времени.

+0

Да, это возможно. Вы можете определить их как 'const' и инициализировать их с возвращаемым значением функции, которая анализирует файл. При оптимизации дополнительной копии следует опустить. – StoryTeller

+0

@StoryTeller In C? Ты уверен? C 'const' довольно ограничительный, поскольку он допускает только постоянные выражения и строковые литералы в выражении инициализатора, поэтому я не думаю, что это сработает. В C++ да, но не в C. – Downvoter

+0

Спасибо за ваши быстрые ответы! Ну, если нет, есть ли другой способ гарантировать, что в структуры не будут внесены изменения? –

ответ

0

Да, вы можете инициализировать const с возвращаемым значением функции. Но вы не можете присвоить возвращаемое значение константе.

Пример:

#include <stdio.h> 

int foo() 
{ 
    return 42; 
} 

int main(void) { 
    const int g = foo(); // OK for initializing a const 
    printf("%d\n", g); 
    // g = foo();; <-- will cause compile error : assignment of read-only variable ‘g’ 
    return 0; 
}