c-preprocessor

    2热度

    4回答

    更新: 显然,你想要使用模板或基类而不是宏来做到这一点。不幸的是,由于各种原因,我不能使用模板或基类。 目前我使用的是宏来定义一堆领域和各种类的方法的,就像这样: class Example { // Use FIELDS_AND_METHODS macro to define some methods and fields FIELDS_AND_METHODS(Exampl

    40热度

    5回答

    我正在寻找将预处理器令牌转换为字符串的方法。 具体来说,我在什么地方了: #define MAX_LEN 16 ,我想用它来防止缓冲区溢出: char val[MAX_LEN+1]; // room for \0 sscanf(buf, "%"MAX_LEN"s", val); 我打开其他的方法来完成同样的事情,但只有标准库。

    18热度

    3回答

    基本定义和示例,并且“X-Macros”中给出了几个引用此wikipedia entry on the C pre-processor: 一种X宏是使用代替 传统一个“.DEF”扩展名的头文件(通常 “.h”),其中包含一个类似宏调用的列表(其中 可称为“组件宏”)。 关于如何使用这种强大的技术有什么好的信息来源? 有没有使用这种方法的知名开源库?

    1热度

    4回答

    我想知道是否有办法在运行时设置#define的值。 我假设在下面的代码中存在针对Oracle特定和Sql Server特定的查询。 #define oracle // ... #if oracle // some code #else // some different code. #endif

    185热度

    10回答

    假设我有一个包含许多预处理指令的源文件。在预处理器完成之后可以看到它的外观吗?

    23热度

    5回答

    是否有允许类似 #if CLR_AT_LEAST_3.5 // use ReaderWriterLockSlim #else // use ReaderWriterLock #endif 或其他方式来做到这一点任何预处理符号?

    9热度

    6回答

    假设我在各种头文件中有#define foo。它可能扩展到一些不同的东西。我想知道(编译.cc文件时)遇到#define时,它将展开的内容,它是哪个文件以及它包含在哪里。 可能吗?如果不是,有没有可能有帮助的部分解决方案? 随意添加意见和澄清请求。 编辑:当前的答案似乎专心的情况下有一个#define和我只是想跳到定义或知道的定义是什么。这是简单的情况,是的,你的解决方案工作。但是当我在不同的文件

    6热度

    5回答

    如何告诉预处理器不要替换特定的宏? 具体问题如下:Windows头文件定义了GetMessage宏。 我的C++头文件与我的API有一个GetMessage方法。我不想重命名我的方法。但是,在Windows上使用API​​时,包括windows.h会将GetMessage方法调用替换为GetMessageA。

    7热度

    5回答

    我期待使用方法: #define 和 #if ,让我在单元测试中模拟可能缺席硬件。什么是使用#define陈述的规则? 即它的默认范围是什么?我可以更改指令的范围吗?

    23热度

    11回答

    例如,从来没有定义一个宏是这样的: #define DANGER 60 + 2 这有可能是危险的,当我们做这样的操作: int wrong_value = DANGER * 2; // Expecting 124 取而代之的是,像这样的,因为你不知道怎么宏的用户可以使用它: #define HARMLESS (60 + 2) 的例子我这很简单,但这很好的解释了我的问题。编写宏时,您会推