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

Чем же макрос define так плох? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ begin http://www.cyberforum.ru/cpp-beginners/thread83539.html
Люди, я собираюсь научиться программировать на Си,подскажите, с чего лучше всего начать в C++, и в какой среде мне будет проще обучаться программировать (Visual C++, Microsoft Visual Studio C++, C++ Builder и т.д.)??? Заранее благодарен!
C++ Как передать вектор из main() во внутреннюю функцию ? Нужно передать вектор из main в функцию gen_binar_sq , записать в него элементы, и получить в main заполненый вектор и распечатать элементы. #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> #include <cctype> #include <iostream> #include <vector> http://www.cyberforum.ru/cpp-beginners/thread83535.html
Функция: удаление узла дерева со всеми потомками C++
подскажите код функции которая удаляет элемент дерева со всеми его потомками NODE *SEARCH(char *key, NODE *root) { NODE *cur=root; if(cur==NULL) { cout<<"\n Data Base is empty."; return cur; }
C++ Определение заглавных букв в файле.
Нужна программа на Си которая определяет слово с самым большим количеством заглавных букв(если таковых много, следует выдать их все).Помогите пожалуйста.Заранее благодарен.
C++ Отличие С от С++ http://www.cyberforum.ru/cpp-beginners/thread83520.html
В чем отличие языка С от С++
C++ Сортировка строк матрицы по возрастанию первых элементов Составить программу, которая переформирует заданную матрицу так, чтобы ее строки расспалагались в порядке возрастания их первых элементов. Помогите пожалуйста, я сколько не пытался, ничего не вышло... Заранее огромное спасибо подробнее

Показать сообщение отдельно
hoggy
6368 / 2586 / 451
Регистрация: 15.11.2014
Сообщений: 5,714
Завершенные тесты: 1
23.10.2015, 19:31     Чем же макрос define так плох?
Цитата Сообщение от Renji Посмотреть сообщение
А не о том, что используемые константы/массивы кушают память
даже используемые не кушают, пока мы не попросим их адресов.


если мы у константы хотим срисовать адрес объекта,
то компилятор будет вынужден где то разместить её,
что бы этот адрес вообще было с чего брать.

но если мы адреса не просили,
то компилятор запросто профигачит inline подстановками
везде по месту использования.

для него подставить циферку 10
(например, пусть это будет значение константы) так же просто,
как препроцессору подставить эту же циферку по местам использования макроса.

Добавлено через 10 минут
Цитата Сообщение от Evg Посмотреть сообщение
Гадать можно сколько угодно.
не нужно ничего гадать.

нужно просто понимать:
пока у фундаментальной константы не попросили адреса,
память она кушать не будет.

пример:

http://rextester.com/LZZDC26614

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
 
template<size_t N> struct kokoko
{
    kokoko() { std::cout << N << std::endl; }
};
 
int main()
{
    
    std::cout << "Hello, world!\n";
    
    const size_t n = 10;
    kokoko<n> ololo;    //<--- значение константы известно времени компиляции
                     // поэтому наравне с енумом можно использовать 
        //в метапрограммировании
 
    //в качестве количества элементов массивов
 
    // и тп
}
более того, даже если константа и не является константой времени компиляции,
то все равно под неё не будет выделяться память,
пока кому нибудь не понадобится адрес объекта.

потому что совершенно очевидно:
что бы тупо подставлять значение константы
по месту использования,
память под сам объект выделять не обязательно.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru