Форум программистов, компьютерный форум CyberForum.ru

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

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

Показать сообщение отдельно
DrOffset
6840 / 4051 / 924
Регистрация: 30.01.2014
Сообщений: 6,855
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).
 
Текущее время: 18:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru