c++ - 如何在我的 cpp 程序中使用这个宏?

标签 c++ macros

我有以下宏。使用此宏时出现错误。如果您观察到 schema::schema() 没有结束括号。这是我的宏头文件。

#ifdef _WINDOWS_SOURCE
#define ExportedByVX0TOOLS  __declspec(dllexport)  
#else
#define ExportedByVX0TOOLS
#endif

#include <stdio.h>
#include <string.h>
//
#if defined(_WINDOWS_SOURCE)
#include <errno.h>
#include <io.h>
#endif
#if defined(_IRIX_SOURCE) || defined(_SUNOS_SOURCE) || defined(_HPUX_SOURCE) || defined(_AIX)
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#endif

#define LoadSchemaDico(schema)\
        class ExportedByVX0TOOLS schema { public: schema();};\
        extern "C" ExportedByVX0TOOLS int fctCreate##schema();\
        int  fctCreate##schema(){ int ret=1 ; return ret; }\
        schema::schema(){ 

最佳答案

你可以这样使用它:

LoadSchemaDico(name)
//constructor code
}

这将扩展为:

class ExportedByVX0TOOLS name
{ 
   public: 
       name();
};
extern "C" ExportedByVX0TOOLS int fctCreatename();
int  fctCreatename()
{ 
   int ret=1 ; 
   return ret; 
}
name::name()
{
//constructor code
} 

关于c++ - 如何在我的 cpp 程序中使用这个宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8323073/

相关文章:

c++ - gcc 在 + 运算符中缩小转换

android - 从 Android 代码定义 C 宏

c++ - 如果仅在其中一个地方手动内联,如何保持在 2 个地方调用的 C++ 函数的一致性

macros - 宏中 `use` 的正确方法

C++重新定义

java - 使用 C、C++ 或 Java 以编程方式获取 Java 和 Flash 的版本号

c++ - 将字符串转换为 double ,而字符串有 N 位小数,C++

c - 知道 void * 分配类型的宏

c++ - 为什么要在定义宏之前取消定义它们?

c# - System.Security.Cryptography.OpenSsl 如何调用 OpenSSL 函数?