Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2

gcc компилирует старую версию файла (до редактирования) вместо новой (редактированной) версии

26.06.2013, 18:54. Показов 2007. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет!
Проблема описана в заголовке, объясню более подробно - проблема проявилась (и стабильно повторяется) в таком виде (пример упрощен до минимума):
допустим имеем 2 файла
C++
1
2
3
4
5
6
7
8
9
10
//header.h
template <class T>
class Foo
{
public:
    void bar()
    {
        std::cout << "Hello" << std::endl;
    }
};
C++
1
2
3
4
5
6
//main.cpp
int main()
{ 
    Foo<some_type> baz;
    baz.bar();
}
компилируем при помощи g++, все ОК. Потом делаем такие изменения

C++
1
2
3
4
5
6
7
8
// в header.h меняем сигнатуру метода
    void bar(int)
    {
        std::cout << "Hello" << std::endl;
    }
 
// в main.cpp соответсвенно вызов метода
baz.bar(1);
на что g++ пишет, что такой перегрузки функции не существует. После этого в header.h можно писать вообще все что угодно, хоть так
C++
1
2
3
alsdjf sadgjs fhj isdhfj slhfas
ashdf iasfhweiauhisjfioasjdf
asdfasdio hfasoid
и, если при этом сделать вызов baz.bar() без аргументов, то все удачно компилируется.
Вот, не могу решить эту проблему. Уже даже начал думать, что QtCreator (работаю в нем) после нажатия ctrl+S "сохраняет" файл у себя в буфере, и потом, когда ему будет удобно, скидывает на диск. Да, бред, но когда видишь такую мистику, начинаешь строить самые нелепые догадки. Короче проверил это (правил хедер через Vim, после чего смотрел вывод cat'а и, убедившись, что файл на диске реально изменен, пробовал компилировать), g++ все равно где-то находит старую версию файла, новую в упор не видит. В связи с этим пока что перешел на clang, но хочется разобраться с gcc.
Может будут какие-нибудь идеи?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.06.2013, 18:54
Ответы с готовыми решениями:

При обновлении версии php до 7.0 phpinfo() показывает старую версию
Доброго времени суток! Ubuntu. Обновился по инструкции. php -v - все, как надо. phpinfo() - 5.5.9 Апач рестартовал, комп...

Как из новой версии программы сделать старую
Короче препод сказать что эта программа сделана в более новой версии , мне надо чтобы он была сделана в С++ Builder 6, ребята помогите ......

Пересохранить файлы с новой версии компаса в 17 версию.
Нужно пересохранить файлы с новой версии компаса в 17 версию.

4
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
26.06.2013, 20:03
Подозреваю, что используется старый объектный файл. Проблемы, скорее всего, где-нибудь в сборочных файлах проекта, хидер просто не указан в них, например.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
26.06.2013, 20:11  [ТС]
Цитата Сообщение от NoMasters Посмотреть сообщение
Подозреваю, что используется старый объектный файл.
Тоже такое подозрение было, удалял все объектники перед сборкой.
Цитата Сообщение от NoMasters Посмотреть сообщение
где-нибудь в сборочных файлах проекта
не, я руками собирать пробовал. Проект не большой - КР для ВУЗа, всего 2 файла.

P.S. забыл сказать, проблема возникла но новом ноуте, раньше никогда такого не видел. Хотя думаю это не имеет значения, но все же.
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
26.06.2013, 20:32
Минимальный компилябельный пример, команды сборки? Что показывает g++ -E main.cpp?
1
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
30.06.2013, 17:46  [ТС]
Блин, пока нет времени сесть за ноут и выложить какой-нибудь проблемовоспроизводимый пример.
Цитата Сообщение от NoMasters Посмотреть сообщение
Что показывает g++ -E main.cpp?
Почему-то сам не подумал об этом, обязательно гляну.
Цитата Сообщение от NoMasters Посмотреть сообщение
команды сборки?
Никаких ключей, тупо g++ main.cpp
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.06.2013, 17:46
Помогаю со студенческими работами здесь

Lexmark ms812dn, Как откатить на старую версию прошивки или где достать старую?
Как откатить на старую версию прошивки или где достать старую? Прошили последней прошивкой, перестал видеть картридж.

Объект браузера продолжает хранить старую версию загруженного файла
Проблема в том, что в пределах одной функции(button1_Click()), после изменения файла, объект браузера продолжает хранить старую версию...

GCC Сборка 32 разрядной версии GCC 64 разрядным GCC
Доброго времени суток. Возникла необходимость под 32х разрядный Linux, собрать 32 разрядный GCC. Но на моей основной машине установлена 64...

Как установить последнюю версию Firefox, не обновляя старую версию?
Для удаленной работы применяется цифровая подпись, но она работает только в Firefox не выше 51-й версии. 51 работает, но с глюками,...

g++/gcc не компилирует
есть С++ код #include &lt;iostream&gt; int main(){ std::cout &lt;&lt; &quot;hello ,world!&quot;; } запускаю компилятор и он ничего не...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru