![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 16.07.2015
Сообщений: 31
|
![]()
Здравствуйте. Имеется
header.h code1.cpp code2.cpp И code1.cpp и code2.cpp имеют Код:
Код:
Код:
Код:
Вопросы 1. Какой из исполняемых файлов code1.cpp или code2.cpp выполнится первым? 2. При выполнении CurrentPosition* Position= new CurrentPosition переменная Position уже будет знать, что она extern ? 3. Если переменная Position используется в постоянно выполняемых с определенного момента callback-функциях в обеих cpp -файлах, то не может ли возникнуть ошибка когда обе функции одновременно попытаются получить к ней доступ на запись. Если может, то как этого избежать? Просто я использую внешнюю библиотеку, которая предполагает использование ее callback-функций. Они нужны для разных, но параллельных взаимосвязанных задач. И нет понимания как такое работает с моей extern структурой Position Последний раз редактировалось robix; 23.01.2016 в 00:15. |
![]() |
![]() |
![]() |
#2 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
![]()
однако.
исполняются ехе файлы, а срр - просто текстовые файлы, которые читаются компилятором. |
![]() |
![]() |
![]() |
#3 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]()
Исходим из того, что header.h - заголовочный, а code1.cpp и code2.cpp - файлы реализации. В заголовочном файле прописываются классы и прототипы функций, которые в эти классы включены. Если #include "header.h" имеется в двух cpp файлах, значит оба эти файла принадлежат к одному и тому-же классу или к двум классам, включенным в заголовочный.
Цитата:
Немного сумбурно описал, но думаю - понятно.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
![]() |
![]() |
![]() |
#4 | |||
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
![]() Цитата:
расположенных в разных единицах трансляции, то ответ один - порядок может быть любым. В зависимости от тараканов в головах разработчиков компилятора. Но это будет сделано до входа в main. Цитата:
А вот из-за объявления в заголовке, во всех единицах трансляции, которые его включают, компилятор видит что такое Position, и может проверить и построить код, оставив проблемы с определением Position на совести линкера. Цитата:
Если же потоков несколько, то необходимо позаботится о синхронизации, например, использовав std::mutex или обеспечив атомарность std::atomic. |
|||
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
выполнения кода из label.Caption | Giku | Помощь студентам | 7 | 04.11.2011 13:10 |
время выполнения кода | Pein95 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 13.05.2011 23:00 |
Ограничение времени выполнения кода | Crystallon | Общие вопросы Delphi | 10 | 16.06.2010 21:59 |
Форма для выполнения кода | segail | Microsoft Office Excel | 3 | 16.03.2010 13:28 |
Последовательность выполнения процедур | lemeshev | Общие вопросы Delphi | 4 | 15.05.2009 20:33 |