Что эффективно использовать #pragma once или #ifndef #endif?

Чтобы избежать многократного включения файла заголовка, один из моих друзей предложил следующий способ

  #ifndef _INTERFACEMESSAGE_HPP
  #define _INTERFACEMESSAGE_HPP
  class CInterfaceMessage
  {
     / /Declaration of class goes here
  //i.e declaration of member variables and methods 
   private:
   int m_nCount;
     CString m_cStrMessage;
    public:
    CString foo(int);
 }
   #endif

, где _INTERFACEMESSAGE_HPP - это просто идентификатор

, но когда я объявляю класс с помощью Visual Studio 2005 IDE, я получаю выражение как { {1}} #pragma once в начале определения класса когда я воспользовался помощью msdn, чтобы найти цель #pragma once , он дал мне следующее объяснение

«Указывает, что файл будет включен (открыт) только один раз компилятором при компиляции файла с исходным кодом».

Кто-нибудь, пожалуйста, скажите, какой подход правильный? Если оба верны, то в чем разница? один подход лучше другого?

6
задан karthik 4 April 2011 в 10:16
поделиться