powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / #pragma once или #define?
5 сообщений из 5, страница 1 из 1
#pragma once или #define?
    #33679472
Landanan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем, такой вот вопрос у меня по С++:

Например, есть 2 класса: classOne.h и classTwo.h

// classOne.h

#include "classTwo.h"

classOne { };


// main.cpp

#include "classOne.h"
#include "classTwo.h"

int main() { return 0; }


В этом случае classTwo заинклюдится 2 раза, что не очень хорошо.
Для этого обычно используют либо #define либо #pragma once.
Так вот если код выглядит так:

// classTwo.h

#pragma once

class classTwo { };


Компайлер удостоверится, что данный класс присоединен только один раз, так?
Или я чего-то не догоняю?

И если я использую прагму, стоит ли делать что-то в этом роде:

// classTwo.h

#ifndef CLASSTWO_H
#define CLASSTWO_H

class classTwo { };

#endif

?

Или это одно и то же?

Прошу прощения, если сумбурно описал...
Буду благодарен за ответ.
...
Рейтинг: 0 / 0
#pragma once или #define?
    #33679502
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем, во первых #define будет гарантированно работать на любом компиляторе. Во вторых, недавно был забавный случай когда одинаковые h-файлы лежали в двух разных каталогах и в проекте ошибочно зацепились оба варианта. При использовании #pragma once все естественно развалилось, так как с ее точки зрения файлы разные, при использовании #ifdef все бы номано
(в том смысле что скомпилялось бы).

Думайте сами ...
...
Рейтинг: 0 / 0
#pragma once или #define?
    #33679617
Landanan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ!

Так понял, безопаснее использовать #define
Учту! :)
...
Рейтинг: 0 / 0
#pragma once или #define?
    #33679684
ylinik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)Во вторых, недавно был забавный случай когда одинаковые h-файлы лежали в двух разных каталогах и в проекте ошибочно зацепились оба варианта. При использовании #pragma once все естественно развалилось, так как с ее точки зрения файлы разные, при использовании #ifdef все бы номано
(в том смысле что скомпилялось бы).

Думайте сами ...

имхо, в данном случае лучше, что бы развалилось, т.к. файлы могли "немного" различаться значением чего-либо.
...
Рейтинг: 0 / 0
#pragma once или #define?
    #33680002
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поэтому я сказал:

Gluk (Kazan)Думайте сами ...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / #pragma once или #define?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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