powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / No previous extern declaration for non-static variable 'abc
18 сообщений из 18, страница 1 из 1
No previous extern declaration for non-static variable 'abc
    #39813377
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Легаси проект. Переменные с такими ошибками расположены в cpp
QString abc;
MyFor::MyForm(xxxxxxx: QMainWindow(

Как правильно сейчас пишут? Где размещают переменные? В заголовочном файле?
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39813472
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123с такими ошибками

Что за компилятор выдаёт такую ошибку? Никогда её не видел.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39813477
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Qt Creator
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39813479
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перетащил в заголовок класса h в private поле.
Вроде работает. Непонимаю, зачем переменную с областью видимости cpp писать в cpp.)))
Когда там несколько классов что ли?
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39813485
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В cpp #define SSS "константа %1"
тоже правильнее перенести в заголовочный класса?
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39813491
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Непонимаю, зачем переменную с областью видимости cpp писать в cpp.)))

Если у переменной нет "static" спереди, то её область видимости гораздо шире, чем .cpp в
котором она объявлена. Но обычно компилятор на такое не ругается.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39813495
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Шире до куда? На все приложение?
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39813498
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Это варнинг. И возможно в последних С++
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39813500
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Dimitry Sibiryakov,
Шире до куда? На все приложение?
extern
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39813505
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Запутано)))
Куда define писать?
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39813521
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Dima T,
Запутано)))
Куда define писать?
Если надо только в пределах cpp, то в cpp.
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39813550
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕсли у переменной нет "static" спереди, то её область видимости гораздо шире, чем .cpp в
котором она объявлена. Но обычно компилятор на такое не ругается.
Это clang такое выдает.
Типа, или сделай static (или анонимный неймспейс) или сделай хедер с декларациями.
А иначе ему похоже на незапланированное расширение области видимости.
В принципе разумно. Например может быть нарушение ODR если в двух файлах будут переменные с одним именем но разным типом - тогда привет отладка случайных крэшей ))
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39813653
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Перетащил в заголовок класса h в private поле.
Вроде работает. Непонимаю, зачем переменную с областью видимости cpp писать в cpp.)))
Когда там несколько классов что ли?

ну, в х файле надо объявлять, если он включается не в один цпп, иначе пофиг.

Кроме того, по второму вопросу:
авторВ cpp #define SSS "константа %1"
тоже правильнее перенести в заголовочный класса?


для красоты - да, но см. пред. ответ и лучше проверить была ли определена
#ifndef SSS
#define SSS "константа %1"
#endif
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39813660
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyпривет отладка случайных крэшей

Это как? Компилятор же должен сформировать корректное обращение к той переменной, которая
видна в текущем модуле и выпасть с ошибкой если две переменные ему видны сразу (по крайней
мере с -Wshadow).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39813835
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,
Спс.
Прочитал, что define строковых констант лучше переделать на переменные... Литералы.
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39813843
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть имеем 15 строк для messageBox в define.
Правильнее их в
Пространство имен message и в const.
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39813932
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЭто как? Компилятор же должен сформировать корректное обращение к той переменной, которая
видна в текущем модуле и выпасть с ошибкой если две переменные ему видны сразу (по крайней
мере с -Wshadow).
Ну, это я погорячился. Будет ошибка связывания просто ))
...
Рейтинг: 0 / 0
No previous extern declaration for non-static variable 'abc
    #39815042
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovЕсли у переменной нет "static" спереди, то её область видимости гораздо шире, чем .cpp в
котором она объявлена.Не путай область видимости и linkage.
Область видимости шире translation unit (~~ .cpp-файла) не бывает.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / No previous extern declaration for non-static variable 'abc
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]