草庐IT

SOME_PREPROCESSOR_DEFINE

全部标签

c++ - 任何用于测试扩展 C/C++ #define 宏的实用程序?

似乎我经常花费太多时间来尝试让#define宏完全按照我的意愿行事。我将在下面发布我当前的困境,并感谢任何帮助。但实际上更大的问题是是否有人可以推荐任何实用程序来快速显示宏实际在做什么?如果我能看出问题所在,即使是缓慢的试错过程似乎也会变得更快。目前,我正在从我制作的DLL中动态加载一长串函数。按照我的设置方式,函数指针与导出的函数具有相同的名称,用于原型(prototype)化它们的typedef(s)具有相同的名称,但带有前置下划线。所以我想用一个define来简化一长串函数指针的赋值。例如,在下面的代码语句中,'hexdump'是一个typedef的函数点的名称,也是函数的名称,

c++ - 任何用于测试扩展 C/C++ #define 宏的实用程序?

似乎我经常花费太多时间来尝试让#define宏完全按照我的意愿行事。我将在下面发布我当前的困境,并感谢任何帮助。但实际上更大的问题是是否有人可以推荐任何实用程序来快速显示宏实际在做什么?如果我能看出问题所在,即使是缓慢的试错过程似乎也会变得更快。目前,我正在从我制作的DLL中动态加载一长串函数。按照我的设置方式,函数指针与导出的函数具有相同的名称,用于原型(prototype)化它们的typedef(s)具有相同的名称,但带有前置下划线。所以我想用一个define来简化一长串函数指针的赋值。例如,在下面的代码语句中,'hexdump'是一个typedef的函数点的名称,也是函数的名称,

c++ - Visual Studio 2010 中是否有 64 位的#define?

是否有#define指示VisualStudio是否在64位模式下编译?我希望能够像这样有条件地包含一些代码#ifdef_IS_64BIT...#else//32bit...#endif我知道我可以自己创建一个标志,但我想知道编译器是否提供了一个。 最佳答案 #ifdef_WIN64...#else...#endif记录于Microsoftdocs 关于c++-VisualStudio2010中是否有64位的#define?,我们在StackOverflow上找到一个类似的问题:

c++ - Visual Studio 2010 中是否有 64 位的#define?

是否有#define指示VisualStudio是否在64位模式下编译?我希望能够像这样有条件地包含一些代码#ifdef_IS_64BIT...#else//32bit...#endif我知道我可以自己创建一个标志,但我想知道编译器是否提供了一个。 最佳答案 #ifdef_WIN64...#else...#endif记录于Microsoftdocs 关于c++-VisualStudio2010中是否有64位的#define?,我们在StackOverflow上找到一个类似的问题:

c++ - 如何测试预处理器符号是否是#define'd但没有值(value)?

使用C++预处理器指令,是否可以测试预处理器符号是否已定义但没有值?类似的东西:#defineMYVARIABLE#if!defined(MYVARIABLE)||#MYVARIABLE==""...blablabla...#endif编辑:我这样做的原因是因为我正在处理的项目应该通过/DMYSTR=$(MYENVSTR),并且此字符串可能为空。如果用户忘记定义此字符串,我想确保项目无法编译。 最佳答案 索玛宏魔法:#defineDO_EXPAND(VAL)VAL##1#defineEXPAND(VAL)DO_EXPAND(VAL)

c++ - 如何测试预处理器符号是否是#define'd但没有值(value)?

使用C++预处理器指令,是否可以测试预处理器符号是否已定义但没有值?类似的东西:#defineMYVARIABLE#if!defined(MYVARIABLE)||#MYVARIABLE==""...blablabla...#endif编辑:我这样做的原因是因为我正在处理的项目应该通过/DMYSTR=$(MYENVSTR),并且此字符串可能为空。如果用户忘记定义此字符串,我想确保项目无法编译。 最佳答案 索玛宏魔法:#defineDO_EXPAND(VAL)VAL##1#defineEXPAND(VAL)DO_EXPAND(VAL)

c++ - 关于c++转换: no known conversion for argument 1 from ‘[some_class]' to ‘[some_class]&’

我正在使用C++,但出现了一个我不知道确切原因的错误。我找到了解决方案,但仍然想知道为什么。classBase{public:voidsomething(Base&b){}};intmain(){Baseb;b.something(Base());return0;}当我编译代码时,出现以下错误:abc.cpp:12:20:error:nomatchingfunctionforcallto‘Base::something(Base)’abc.cpp:12:20:note:candidateis:abc.cpp:6:7:note:voidBase::something(Base&)abc.

c++ - 关于c++转换: no known conversion for argument 1 from ‘[some_class]' to ‘[some_class]&’

我正在使用C++,但出现了一个我不知道确切原因的错误。我找到了解决方案,但仍然想知道为什么。classBase{public:voidsomething(Base&b){}};intmain(){Baseb;b.something(Base());return0;}当我编译代码时,出现以下错误:abc.cpp:12:20:error:nomatchingfunctionforcallto‘Base::something(Base)’abc.cpp:12:20:note:candidateis:abc.cpp:6:7:note:voidBase::something(Base&)abc.

c++ - 位数 : preprocessor magic vs modern C++

假设我想为16位block中的64位整数创建一个编译时构造的位计数查找表。我知道这样做的唯一方法是以下代码:#defineB4(n)n,n+1,n+1,n+2#defineB6(n)B4(n),B4(n+1),B4(n+1),B4(n+2)#defineB8(n)B6(n),B6(n+1),B6(n+1),B6(n+2)#defineB10(n)B8(n),B8(n+1),B8(n+1),B8(n+2)#defineB12(n)B10(n),B10(n+1),B10(n+1),B10(n+2)#defineB14(n)B12(n),B12(n+1),B12(n+1),B12(n+2)#

c++ - 位数 : preprocessor magic vs modern C++

假设我想为16位block中的64位整数创建一个编译时构造的位计数查找表。我知道这样做的唯一方法是以下代码:#defineB4(n)n,n+1,n+1,n+2#defineB6(n)B4(n),B4(n+1),B4(n+1),B4(n+2)#defineB8(n)B6(n),B6(n+1),B6(n+1),B6(n+2)#defineB10(n)B8(n),B8(n+1),B8(n+1),B8(n+2)#defineB12(n)B10(n),B10(n+1),B10(n+1),B10(n+2)#defineB14(n)B12(n),B12(n+1),B12(n+1),B12(n+2)#