macros相关内容
我正在使用我在此处找到的编译时散列技术来试验一个 C++ 项目.宏按预期工作,编译时间合理,但 64 个递归宏似乎在与 Visual Studio 的 Intellisense 玩地狱.每次简短编辑后,IDE 都会挂起约 30 秒.我怀疑它正在尝试解析嵌套的宏.一旦我删除 #include "consthashmacro.h 行,响应就会恢复正常. 有没有办法为特定的头文件禁用智能感知?
..
在谷歌V8 项目. //表达式 ARRAY_SIZE(a) 是类型的编译时常量//size_t 表示给定的元素个数//大批.您应该只在静态分配上使用 ARRAY_SIZE//数组.#define ARRAY_SIZE(a) \(((大小(a)/大小(*(a)))/\static_cast(!(sizeof(a) % sizeof(*(a)))))) 我的问题是后半部分:stat
..
是否可以用空格编写define,例如: #define 在这里替换为替换 我想将“replace to"替换为“replacement here". 编辑: 我想测试私有成员: 我确实写过 #define private public 但它不适用于 Qt 中的私有插槽 所以我打算使用类似的东西 #define 私有槽:公共槽: 无论如何,我找到了另一种测试插槽的
..
我有一个shared_ptr对象x,它有如下get和set方法: x->a_value();x->set_a_value();x->b_value();x->set_b_value(); 当我尝试定义宏时: #define MAC(类型) \x->set_##type##_value(val);MAC(一) 它工作正常,但是当我这样做时: #define MAC(类型) \x->##ty
..
假设我们有一个 std::aligned_storage 的实现.我为 alignof 和 alignas 运算符定义了两个宏. #include #include #define 对齐(x)对齐(x)#define 对齐(x)对齐(x)模板结
..
可能重复: 为什么有时会有C/C++ 宏中的 do/while 和 if/else 语句毫无意义? 为什么下面的宏中需要do while(false)? #define LOG(message, ...) \做 { \锁定锁(logMutex);\....很多代码...} 而(假) 我认为它没有任何功能用途.我是否忽略了什么? 解决方案 它将一个块变成一个语句.如果您只
..
我知道内核大量使用 likely 和 unlikely 宏.宏的文档位于 内置函数:long __builtin_expect (long exp,长 c).但他们并没有真正讨论细节. 编译器究竟如何处理likely(x)和__builtin_expect((x),1)? 是由代码生成器还是优化器处理? 是否取决于优化级别? 生成的代码示例是什么? 解决方案 我刚刚
..
我正在尝试在 emacs lisp 中编写一个宏来创建一些“辅助函数". 最终,我的辅助函数将比我这里的更有用.我意识到可能有更好/更直观的方法来完成同样的事情(请发布),但我的基本问题是为什么这不起作用/我做错了什么: (defmacro deftext (functionname texttoinsert)`(defun ,(make-symbol (concatenate 'stri
..
这是我正在尝试做的简化版本 枚举优先{一个,乙,C,nbElementFirstEnum,};枚举秒{一个,乙,C,nbElementSecondEnum,};静态断言(第一::nbElementFirstEnum == 第二::nbElementSecondEnum,“枚举中的元素数量不同.");/*静态断言(第一::nbElementFirstEnum == 第二::nbElementSec
..
GCC 支持 -fshort-wchar 将 wchar_t 从 4 转换为两个字节. 在编译时检测 wchar_t 大小的最佳方法是什么,以便我可以将其正确映射到适当的 utf-16 或 utf-32 类型?至少,在 c++0x 发布并为我们提供稳定的 utf16_t 和 utf_32_t 类型定义之前. #if ?what_goes_here?typedef wchar_t Utf32
..
我正在用 Scala 编写一个宏,但是当我调用它时,我收到一条错误消息,提示“Double 不接受参数".很明显,宏构建 AST 的方式有问题.那么我怎样才能看到扩展的宏呢?有没有办法在运行时调用宏实现? 解决方案 为编译器提供 -Ymacro-debug-lite 或 -Ymacro-debug-verbose 选项. 在我的脑海中,打印的 AST 的细化由 -Yshow-tree
..
我有时会故意省略宏参数.例如,对于类似函数的宏,如 #define MY_MACRO(A, B, C) ... 我可以这样称呼它: MY_MACRO(, bar, baz) 技术上仍有 3 个参数;只是第一个是“空的".这个问题与可变参数宏无关. 当我这样做时,我在使用 -ansi(又名 -std=c++98)进行编译时收到来自 g++ 的警告,但在我使用 时却没有-std=c++0
..
我正在处理的代码使用了一些非常复杂的宏 voodoo 来生成代码,但最终有一个看起来像这样的构造 #define ARGS 1,2,3#define MACROFUNC_OUTER(PARAMS) MACROFUNC_INNER(PARAMS)#define MACROFUNC_INNER(A,B,C) A + B + Cint a = MACROFUNC_OUTER(ARGS); 期望得到的
..
我已经转了几天,想弄清楚为什么我的 post_install 钩子没有产生我期望的输出.这是我的 Podfile: source 'https://github.com/CocoaPods/Specs.git'目标“SCCommon"做平台:ios,“6.0"pod 'AFNetworking', '~>1.2.1'豆荚'地幔','〜>1.3'豆荚'PubNub','3.5.5'结尾目标“SCC
..
根据C FAQ,“内联"基本有3种实用方法C中的代码: #define MACRO(arg1, arg2) do { \/* 声明 */\stmt1;\stmt2;\/* ... */\} while(0)/* (没有尾随 ; ) */ 或 #define FUNC(arg1, arg2) (expr1, expr2, expr3) 为了澄清这一点,表达式中使用了参数,逗号运算符返回最后一
..
在 C 和 C++ 中,您可以通过使用 C99 & 的 __func__ 宏来获取当前正在执行的函数的名称.用于 MSVC 的 C++11 和 ___FUNCTION___. Rust 中是否有这样的等价物? __func__ 在 C 中的示例: #include "stdio.h"无效的搞笑你好(){printf ("你好来自 %s\n", __func__);}int main(
..
可能重复: C 宏创建字符串 我有一个函数,它接受一个 char* 类型的参数,例如 f("string"); 如果字符串参数是在函数调用中动态定义的,如何在字符串体中展开宏? 例如: #define COLOR #00ff00f("abc 颜色"); 相当于 f("abc #00ff00"); 但是不执行扩展,函数接收字面意思是abc COLOR. 特别是,我需要将
..
背景 我一直在使用 C 预处理器来管理和“编译"具有多个文件和构建目标的半大型 javascript 项目.这使您可以从 javascript 中完全访问 C 预处理器指令,如 #include、#define、#ifdef 等.这是一个示例构建脚本,您可以测试示例代码: #!/bin/bash导出 OPTS="-DDEBUG_MODE=1 -Isrc"对于 FILE 在 `find sr
..
我想在 Scala 2.11+ 中使用注释宏生成方法的别名.我什至不确定这是否可能.如果是,怎么做? 示例 - 鉴于以下情况,我希望注释宏扩展为 类 Socket {@alias(aliases = Seq("!", "ask", "read"))def load(n: Int): Seq[Byte] = {/* impl */}} 我希望上面生成的同义词方法存根如下: 类 Socke
..
考虑以下代码: #include #include 结构 A{一个() {}A(const A&) { std::cout
..