Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 7

Как в выводе nm разделить static и const?

02.12.2012, 22:12. Показов 1026. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В выводе nm для объектного файла абсолютно одинаково выглядят глобально объявленные неинициализированные static int и const std::string, инициализированные строковыми значениями через ="blah".
Т.е.
const std::string blah = "blah";
и
static int blah2;

В выводе идут как "%адрес% b %имя_переменной%".
Соответственно, интересуют методы разделения этих случаев.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.12.2012, 22:12
Ответы с готовыми решениями:

Static CONST =10; Как это работает?
class class1 { public static final int CONST; static { CONST = 10; } } Что это такое:static { CONST = 10;

Как компилятор обрабатывает член класса static constexpr const char*
Привет! Наткнулся на непонятный момент class Foo { public: static constexpr const char* PTR = "value"; }; ...

static const?
если мне нужна константа в классе, как ее лучше объявить со static или без? разница будет только в том, что со статиком мне можно будет...

9
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
03.12.2012, 08:51
Цитата Сообщение от Reira Посмотреть сообщение
Т.е.
const std::string blah = "blah";
и
static int blah2;
static int не такой уж глобальный.
std::string это не простой тип(double, int, char), для инициализации требуется вызов конструктора.
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 7
03.12.2012, 09:03  [ТС]
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
static int не такой уж глобальный.
std::string это не простой тип(double, int, char), для инициализации требуется вызов конструктора.
стоооп. там же для std::string вызывается конструктор, хоть и неявно.
а static int глобален в пределах этого файла как минимум. а большего нам и не требуется.

Непонятно...
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
03.12.2012, 10:54
Цитата Сообщение от Reira Посмотреть сообщение
стоооп. там же для std::string вызывается конструктор, хоть и неявно.
Конструктор здесь вызываться явно. Инициализация происходит во время выполнения, а не во время компиляции.
Цитата Сообщение от Reira Посмотреть сообщение
а static int глобален в пределах этого файла как минимум. а большего нам и не требуется.
Поэтому не такой глобальный, т. к. область видимости ограничена.

Если нужно только разделение static и const, то смотрим по области видимости.
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 7
03.12.2012, 11:54  [ТС]
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Конструктор здесь вызываться явно. Инициализация происходит во время выполнения, а не во время компиляции.

Поэтому не такой глобальный, т. к. область видимости ограничена.

Если нужно только разделение static и const, то смотрим по области видимости.
Логичный вопрос - а как это сделать штатными утилитами в linux, например???
Заранее Огромное спасибо
0
387 / 151 / 16
Регистрация: 12.05.2011
Сообщений: 450
05.12.2012, 20:25
на уровне объектного файла между этими двумя переменными нет разницы

просто две именованные области памяти, видимые только внутри данного файла. все эти static и const потерялись где-то на уровне компилятора
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
06.12.2012, 07:59
Цитата Сообщение от yekka Посмотреть сообщение
просто две именованные области памяти, видимые только внутри данного файла. все эти static и const потерялись где-то на уровне компилятора
Без static или безымянного пространства имен, переменная имеет глобальную область видимости.
В этом случае при помощи extern, можно обращаться к любой другой переменной.
Переменные помеченные static попадают раздел статических имен, в таблице имен объектного файла.
0
387 / 151 / 16
Регистрация: 12.05.2011
Сообщений: 450
06.12.2012, 08:02
боюсь, вы забываете, что в плюсах глобальные константы имеют локальную область видимости
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
06.12.2012, 11:05
Цитата Сообщение от yekka Посмотреть сообщение
боюсь, вы забываете, что в плюсах глобальные константы имеют локальную область видимости
Где объявлены эти константы?
В таком вот случае:
C++ (Qt)
1
2
3
4
5
6
#include <iostream>
 
int main()
{
    return 0;
}
C++ (Qt)
1
int foo = 5;
C++ (Qt)
1
int foo = 6;
Bash
1
g++ main.cpp foo1.cpp foo2.cpp
Имеем конфликт имен
Bash
1
2
ccY8zEGV.o:foo2.cpp:(.data+0x0): multiple definition of `foo'
ccM8V8MC.o:foo1.cpp:(.data+0x0): first defined here
0
387 / 151 / 16
Регистрация: 12.05.2011
Сообщений: 450
06.12.2012, 19:05
А если вместо int foo написать const int foo, то никакого конфликта не будет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.12.2012, 19:05
Помогаю со студенческими работами здесь

static const
объясните, пожалуйста, вот такую странную конструкцию (накопал в старой проге): после #include идет следующее: static const char...

static и const
static void A(); Что дает этот статик? Что он вообще дает? int A() const; Что дает конст в данном случае? static int...

Переопределение CONST и STATIC
Можно ли в дочерних классах переопределять свойства класса, объявленные в родительском, как CONST или static? Пожалуйста, в случае,...

const или static?
Предположим, что класс использует заранее известную строку, которую можно определить как &quot;const&quot;. Каждый экземпляр этого класса...

Static const в dll
Встретил в библиотек такое: Color.hpp class SFML_GRAPHICS_API Color { public: ... static const Color Black; ///&lt; Black...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru