Форум: "Прочее";
Текущий архив: 2014.04.13;
Скачать: [xml.tar.bz2];
Внизв Си функция объявлена как static Найти похожие ветки
← →
KilkennyCat © (2013-10-16 08:03) [0]объявленные в этой функции переменные наследуют static?
← →
Inovet © (2013-10-16 08:22) [1]Нет. Такая функция не привязвна к экземпляру класса.
← →
KilkennyCat © (2013-10-16 08:43) [2]ага. спасибо.
← →
Mystic © (2013-10-16 08:45) [3]Нет, просто данная функция не попадает в объектный файл, соответственно не может быть использована в другой единице трансляции.
Например, следующие два файла нормально скомпилируются и будут работать. Но если убрать static, то будет ошибка линковки (duplicate echo_filename).// file1.c
static void echo_filename()
{
printf("file1.c\n");
}
void f1()
{
echo_filename();
printf("f1\n");
}
// file2.c
static void echo_filename()
{
printf("file2.c\n");
}
void f2()
{
echo_filename();
printf("f2\n");
}
> Такая функция не привязвна к экземпляру класса.
В си нету классов
← →
Inovet © (2013-10-16 09:20) [4]> [3] Mystic © (16.10.13 08:45)
> В си нету классов
Действительно.
← →
KilkennyCat © (2013-10-16 10:22) [5]
> Mystic © (16.10.13 08:45) [3]
хм... а я прочитал, что для подобных целей namespace
← →
Mystic © (2013-10-16 11:49) [6]
> хм... а я прочитал, что для подобных целей namespace
namespace (анонимные) это C++, в С нет namespace. Но для совместимости C++ должен понимать C.
Ну и static короче, в анонимный namespace больше классы оборачивают. static часто с инлайнами используется. Также static позволяет сделать forward декларацию, ...
← →
KilkennyCat © (2013-10-16 11:59) [7]ага, понял. спасибо.
← →
Mystic © (2013-10-16 12:39) [8]Ну а применительно к методам класса в C++ static работает так, как сказал > Inovet © (16.10.13 08:22) [1]
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2014.04.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.002 c