С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Класс памяти по умолчанию для глобальной переменной - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Заполнить рандомно массив и все отрицательные элементы отправить в конец http://www.cyberforum.ru/cpp-beginners/thread1124460.html
В массиве A=(a1, а2, ..., аn) все отрицательные элементы отправить в «хвост» массива. ( Это задание) Вот сам код. // ConsoleApplication4234452.cpp: определяет точку входа для консольного...
C++ Реализовать метод приведения времени в минуты Реализовать внешнюю функцию с именем make_mun(), где mun – тип реализуемой структуры. Функция должна получать в качестве аргументов значения для полей структуры и возвращать структуру требуемого... http://www.cyberforum.ru/cpp-beginners/thread1124444.html
C++ Структура-пара. Реализовать метод rangecheck() – проверку заданного числа
Реализовать внешнюю функцию с именем make_mun(), где mun – тип реализуемой структуры. Функция должна получать в качестве аргументов значения для полей структуры и возвращать структуру требуемого...
C++ Определить, лежит ли точка внутри заштрихованной области
Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений «Да», «Нет», «На границе» в зависимости от того, лежит ли точка внутри заштрихованной области, вне...
C++ Удалить подряд идущие одинаковые слова из строки http://www.cyberforum.ru/cpp-beginners/thread1124426.html
Одна из ошибок, которую часто допускают неопытные наборщики - дважды написанное слово. Найти такие ошибки в заданном тексте и исправить их Помогите, пожалуйста.
C++ В матрице из нулей и единиц найти квадрат заданного размера, состоящую целиком из нулей В матрице A (m, n), которая состоит из нулей и единиц, найти квадрат заданного размера (квадратную подматрицу), состоящую целиком из нулей Помогите, пожалуйста, абсолютно нет времени это сделать. подробнее

Показать сообщение отдельно
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
20.03.2014, 19:19
Tulosba,
Пояснения к параграфу 6.2.2
The appearance of the keyword extern in a declaration, regardless of whether it is
used inside or outside of the scope of a function, indicates a pure reference (ref),
which does not define storage. Somewhere in all of the translation units, at least
one definition (def) of the object must exist. An external definition is indicated
by an object declaration in file scope containing no storage class indication.
Цитата Сообщение от Tulosba Посмотреть сообщение
Вот это и хотелось понять. Именно описанный случай.
Полезное использование может заключаться в более явном определении, что используется именно "внешняя" по отношению к функции переменная:
C
1
2
3
4
5
6
7
8
9
10
static int c;
 
...
 
void funA (void) 
{
    extern int c;  
 
    с = 2;
}
Кстати, если написать наоборот, то получим UB:
C
1
2
extern int a;
static int a;
GCC выдает диагностику, но какой-то другой компилятор может и не выдать и будет прав. По стандарту - UB в случае, если идентификатор имеет одновременно внешнее и внутреннее связывание (6.2.2/7).
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.