Подскажите, как ведет себя extern в следующей ситуации:
extern int a,
b,
c;
Все три переменные a, b и c являются внешними, так ведь?
Да, все 3 являются внешними.
Кстати, чтобы это проверить, достаточно их объявить и использовать с наблюдаемым поведением (это важно!). В таком случае линкер сообщит о попытках использовать несуществующие переменные: https://ideone.com/rgf40P
extern int a, b, c;
int main()
{
return a + b + c;
}
/home/CPCz1j/ccrst43X.o: In function `main':
prog.cpp:(.text.startup+0x2): undefined reference to `b'
prog.cpp:(.text.startup+0x8): undefined reference to `a'
prog.cpp:(.text.startup+0xe): undefined reference to `c'
collect2: error: ld returned 1 exit status
В синтаксисе объявления спецификатор класса хранения extern
входит в "общую" часть объявления (declaration-specifiers в С, decl-specifier-seq в С++), то есть относится ко всем деклараторам в объявлении, а не к какому-то одному. В вашем примере все три переменные объявлены с внешним связыванием.
Отдельный вопрос - что вы имеете в виду под "являются внешними". Спецификатор extern
просто придает идентификатору внешнее связывание. Но он совсем не говорит, что данная переменная определена где-то в другом месте.
Например, объявление
extern int a,
b = 42,
c;
говорит о том, что переменные a
и c
имеют внешнее связывание и определены где-то в другом месте, а вот переменная b
имеет внешнее связывание и определена здесь (и доступна из других мест).
Другими словами, спецификатор extern
может иметь как семантику "импорта", так и семантику "экспорта", в зависимости от того, является ли объявление переменной или функции еще и определением.
Я начинающий автоматизатор, и мне очень понравился фреймворк cucumber, и хочется самому поставить его у себя дома на ПКМогу писать сценарии и степы...
мне нужно сделать что-то типа TreeView, суть в том, что-бы когда пользователь выбирает некий класс менялась основная панель, реализовать всё нужно...
Есть задача - реализовать 2 сервиса, один отдает видеопоток, другой принимает его и записывает на дискВопрос в том, как осуществить соединение...
Есть какие-то методы позволяющие изменить цвет JButton во время нажатия? Если же нет, то как это возможно сделать? Пытался найти, но ничего достаточно...