2016-07-28 4 views
6

前に、私は最近、いくつかのコード上で探していたと私は、この時につまずくました:は、クラス名

IDATA_EXPORTは以下である
class IDATA_EXPORT IData { 
    /* .... */ 
} 

:この場合はIDATA_EXPORTは何

#ifndef IDATA_EXPORT 
    #define IDATA_EXPORT 
#endif 

?それは(例えば、MSVCの下)のように定義された時間内に、またはいくつかの条件の下で、いくつかの点で

+1

を参照してください、詳細については

#ifdef IS_LIBRARY // <--this would only be defined when compiling the library! #define IDATA_EXPORT __declspec(dllexport) #else #define IDATA_EXPORT __declspec(dllimport) #endif 

:それから、次のようになります。それは決して存在しなかったようです。 –

+0

クラスの定義にはどのような役割がありますか? – SnuKies

+0

[Duplicate](http://stackoverflow.com/q/37487907/3233393)ですが、その値は-2です。 – Quentin

答えて

6

ほとんどの(?私が意味する、...それがcharなど、int型のようなタイプです):

#define IDATA_EXPORT __declspec(dllexport) 

ライブラリから公的にエクスポートするクラスを示すために使用されたクラスです。

マクロを使用することで、開発者はクラスをエクスポートしたり、何かをエクスポートしたりすることなく、個々のクラスを上書きしなくてもかまいません。

これは、コードをライブラリからコンパイルするか、ライブラリに依存するプログラムかによって、クラスのインポートとエクスポートを交互に切り替えるマクロパターンの一部です。それは何に展開されるマクロですdllexport, dllimport on MSDN

+0

私が知らないことがまだたくさんあるので、あなたが言ったことを見ていきます。これは良い出発点になります。ありがとう – SnuKies