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

Оператор -> и спецификатор класса памяти extern - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обобщенный указатель типа void http://www.cyberforum.ru/cpp-beginners/thread424242.html
В приложенной картинке рассказывается о динамическом распределении памяти в С. Сказано, что функция malloc() возвращает указатель типа void. Что это вообще значит?! Функции void не могут возвращать значения! А тут ещё какой-то обобщенный указатель! О_о
C++ Книга по ООП Си++ Добрый вечер , мне дали задание ,написать двусвязный список на С++ с помощью ООП... Подскажите , пожалуйста , книгу или статью, по которой можно это выучить... http://www.cyberforum.ru/cpp-beginners/thread424233.html
Пример использования спецификатора volatile C++
В приложенной картинке (из книги Г.С. Шилдта по C++) есть пример использования спецификатора volatile. Есть три вопроса. Первый: что вообще написано в зеленой :) строке? Переменная будет опрашиваться (и получать данные "извне") всегда после того как она "побывала" слева от оператора присваивания? Второй: с чего вдруг если в строке А переменная была опрошена (для присваивания), она не будет...
C++ Циклические алгоритмы
Как реализовать данную функцию для каждого x, изменяющегося от a до b с шагом h. Значения a, b, h и n вводятся с клавиатуры. Работу программы проверить для a = 0,1; b = 1,0; h = 0,1; значение параметра n=10.
C++ Передача массива из главной функции в неглавную по указателю. http://www.cyberforum.ru/cpp-beginners/thread424215.html
Доброго времени суток! Задача: В функции main() сформировать матрицу M со случайными числами. Её передать по указателю в не главную функцию, в которой из матрицы изымается главная диагональ. Вывести на экран получившуюся матрицу. Я взял k=3, сформировал матрицу с рандомными числами, но как передать её по указателю в неглавную функцию не знаю. #include <conio.h> #include <iostream>...
C++ Покрашенный граф Привет для вот такого условия Дан ориентированный граф, у которого каждая дуга покрашена в один из трех цветов. Требуется найти длину кратчайшего пути из 1й вершины в N-ую, если в пути не могут идти подряд две дуги одного цвета. Входные данные В первой строке записаны N и M (2<=N<=200, 0<=M<=N*N). Далее идет M строк с описанием дуг. Каждая дуга описывается тремя целыми числами X, Y, C -... подробнее

Показать сообщение отдельно
LosAngeles
Заблокирован
09.01.2012, 19:07     Оператор -> и спецификатор класса памяти extern
Цитата Сообщение от alex_x_x Посмотреть сообщение
может схавать - зависит от компилятора, но поведение неопределенное
от компилятора это не зависит, компилятор, встретив переменную допустим extern int x, поместит её в таблицу символов, если пройтись по такому объектному файлу objdump, то он покажет смещение *UND* для такой переменной и в коде везде будет обращаться с ней как с обычным интом, просто пока неизвестно его смещение. Во втором модуле можно определить этот самый x причём чем угодно, необязательно интом, можно структурой или указателем на функцию, линкеру это по барабану, ему нужно только смещение и имя идентификатора, во внутренние дела модуля он не лезет. Главное чтобы все были определены по разу, он просто слепит все модули подставив соответсвующие адреса. Он не делает проверку типов. Так что extern volatileint по всей видимости означает что внутри этого модуля с этим импортированным символом будут обращаться как с int volatile, но чем он является на самом деле неизвестно. Конечно это всё зависит от ABI, может на какой нибудь платформе с каким то экзотическим форматом файлов и делается проверка типов, но я с такими не сталкивался. Удобно кстати задефайнить extern в PUBLIC, а static в PRIVATE, тогда становится нагляднее что экспортируется


в системном программировании кстати применяется иногда такой трюк с extern. Иногда нужно например убедиться чтобы размер загрузочного образа был в рамках приличного на этапе компиляции, тогда пользуются тем фактом, что нельзя создать массив отрицательного размера
C
1
extern int dummy[sizeof(image) > LIMIT ? 100 : -100];
а потом определяют его где-нибудь dummy как short int
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru