Я играл с C++ раньше и думал, если в некоторых случаях Поскольку мой C компилятор отказывается позволить мне писать код, такой как:Какова стоимость безымянного объема в C?
for (int i = 0; i < 30; ++i)
{
...
}
Я стараюсь писать что-то вроде:
#include <stdio.h>
int main(int argc, char **argv)
{
{
int i;
for (i = 0; i < 30; ++i) {
printf("%d.\n", i);
}
}
return 0;
}
В результате я не имею эту переменную i в своей области для большего, чем она мне нужна, и освобождает меня для использования в других целях в основной области (я бы не сделал этого с i, так как это итератор по конвенции). Так что я имею право писать глупо код, как:
#include <stdio.h>
int main(int argc, char **argv)
{
int i = 3;
/* my loop scope. */
{
int i;
for (i = 0; i < 30; ++i) {
printf("%d.\n", i);
}
}
printf("i remains intact! %d.\n", i);
return 0;
}
Опять же, я бы не намеренно сделать реальный код для злоупотреблений я люблю это, но во многих случаях, особенно касающихся временных переменных, необходимых в вызовах LibC функций, таких как sem_getvalue или Windows API FormatMessage, где легко загромождать область применения многими временными переменными и путаться с тем, что происходит. Используя неназванные области, теоретически, я мог бы уменьшить сложность моего кода, изолировав эти временные переменные до неназванных областей.
Идея кажется глупой, но убедительной, и мне любопытно, есть ли какая-либо стоимость/недостаток написания кода в этом стиле. Есть ли неотъемлемые проблемы с написанием кода таким образом, или это достойная практика?
Пожалуйста, получите компилятор C99 для переменных с переменными 'for'. Они не так редки. – unwind
Мне было интересно использовать неназванные области для временных переменных, которые необходимо выполнить перед вызовами функций, которые также хранят результаты этих функций. Меня просто интересует неназванная конструкция сама по себе, есть ли какая-то особая причина, чтобы ее избежать? – Dmitry
«Стоимость» объявления переменных во вложенной области - это пространство хранения этих переменных. Вот и все. –