Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2015, 17:26   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Защита от повторного включения файла

Добрый день !

Тут часом не допущена ошибка ?

может должно быть так ?

Код:
#ifndef _AUTOMOBILE_H
#define _AUTOMOBILE_H
//.................
#endif
Изображения
Тип файла: jpg Безымянный.JPG (32.9 Кб, 184 просмотров)
RAFA91 вне форума Ответить с цитированием
Старый 28.09.2015, 17:33   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Нет. не так, а вот так:
Код:
// Что-бы программа не запускалась два раза
BOOL WeAreAlone(LPSTR szName)
{
HANDLE hMutex=CreateMutex(NULL,TRUE,szName);
if (GetLastError()==ERROR_ALREADY_EXISTS)
  {
  CloseHandle(hMutex);
  return false;
  }
return true;
}
А эту хрень, помещаем в обработчик CreateForn
Код:
if (!WeAreAlone("Some_Unique_Name_Or_Other"))exit(0);// программа уже работает
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 28.09.2015 в 17:39.
Smitt&Wesson вне форума Ответить с цитированием
Старый 28.09.2015, 17:35   #3
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

может тогда тупо поставить
Код:
#pragma once
и не парится ?
RAFA91 вне форума Ответить с цитированием
Старый 28.09.2015, 17:39   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Каким образом "программа не запускалась два раза" относится к include guard'ам?


Цитата:
Код:
#pragma once
и не парится ?
#pragma once не стандартный вроде, может не во всех компиляторах быть.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 28.09.2015 в 17:41.
Alex11223 вне форума Ответить с цитированием
Старый 28.09.2015, 17:41   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Если ваш код никогда не будет компилится ничем, кроме майкрософтского компиля, то можно
p51x вне форума Ответить с цитированием
Старый 28.09.2015, 17:43   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
ничем, кроме майкрософтского компиля
https://en.wikipedia.org/wiki/Pragma_once#Portability
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.09.2015, 17:52   #7
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

код со скриншота не работает из-за

#else
RAFA91 вне форума Ответить с цитированием
Старый 28.09.2015, 18:13   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну дык в той теме http://www.cplusplus.com/forum/beginner/7877/ и написано, что не нужен никакой #else

Я не понял зачем вам этот скриншот вообще. Как выглядит стандартный include guard с помощью ifndef можно посмотреть например в википедии https://en.wikipedia.org/wiki/Includ...include_guards , а не в темах с вопросами новичков, естественно в них могут быть ошибки.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.09.2015, 18:14   #9
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
#pragma once не стандартный вроде, может не во всех компиляторах быть.
Только что проверил на Борланде. Запустилась, хоть бы хны. Даже варнинг не выдала.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 28.09.2015, 18:18   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну я выше скинул ссылку с примерным списком и версиями компиляторов поддерживающих это.

Точно именно Борланд, кстати? По-моему оно не работало в старых, а появилось только когда оно уже стало не Борландовской RAD Studio.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка включения файла .ехе Алексей.cpp Помощь студентам 2 04.03.2013 03:07
защита от повторного открытия программы ВалекFCRK Общие вопросы Delphi 7 23.10.2011 14:19
защита файла drzod Помощь студентам 4 01.07.2010 12:38
Защита от повторного запуска Vladya Помощь студентам 8 24.06.2009 09:04
Защита файла tolikman Microsoft Office Word 3 24.01.2009 10:57