macros相关内容

是什么让这个头文件慢了 VS2005 的爬行?(IntelliSense 无罪?)

我正在使用我在此处找到的编译时散列技术来试验一个 C++ 项目.宏按预期工作,编译时间合理,但 64 个递归宏似乎在与 Visual Studio 的 Intellisense 玩地狱.每次简短编辑后,IDE 都会挂起约 30 秒.我怀疑它正在尝试解析嵌套的宏.一旦我删除 #include "consthashmacro.h 行,响应就会恢复正常. 有没有办法为特定的头文件禁用智能感知? ..
发布时间:2022-01-11 20:05:27 C/C++开发

宏定义 ARRAY_SIZE

在谷歌V8 项目. //表达式 ARRAY_SIZE(a) 是类型的编译时常量//size_t 表示给定的元素个数//大批.您应该只在静态分配上使用 ARRAY_SIZE//数组.#define ARRAY_SIZE(a) \(((大小(a)/大小(*(a)))/\static_cast(!(sizeof(a) % sizeof(*(a)))))) 我的问题是后半部分:stat ..
发布时间:2022-01-11 20:05:17 C/C++开发

#用空格定义

是否可以用空格编写define,例如: #define 在这里替换为替换 我想将“replace to"替换为“replacement here". 编辑: 我想测试私有成员: 我确实写过 #define private public 但它不适用于 Qt 中的私有插槽 所以我打算使用类似的东西 #define 私有槽:公共槽: 无论如何,我找到了另一种测试插槽的 ..
发布时间:2022-01-11 20:05:10 C/C++开发

C++ 宏 '##' 在 '->' 之后不起作用操作员

我有一个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 ..
发布时间:2022-01-11 20:04:47 C/C++开发

做 while(false) 模式

可能重复: 为什么有时会有C/C++ 宏中的 do/while 和 if/else 语句毫无意义? 为什么下面的宏中需要do while(false)? #define LOG(message, ...) \做 { \锁定锁(logMutex);\....很多代码...} 而(假) 我认为它没有任何功能用途.我是否忽略了什么? 解决方案 它将一个块变成一个语句.如果您只 ..
发布时间:2022-01-11 20:04:32 C/C++开发

可能(x)和__builtin_expect((x),1)

我知道内核大量使用 likely 和 unlikely 宏.宏的文档位于 内置函数:long __builtin_expect (long exp,长 c).但他们并没有真正讨论细节. 编译器究竟如何处理likely(x)和__builtin_expect((x),1)? 是由代码生成器还是优化器处理? 是否取决于优化级别? 生成的代码示例是什么? 解决方案 我刚刚 ..
发布时间:2022-01-11 20:04:16 其他开发

你能在 Emacs Lisp 宏中创建交互式函数吗?

我正在尝试在 emacs lisp 中编写一个宏来创建一些“辅助函数". 最终,我的辅助函数将比我这里的更有用.我意识到可能有更好/更直观的方法来完成同样的事情(请发布),但我的基本问题是为什么这不起作用/我做错了什么: (defmacro deftext (functionname texttoinsert)`(defun ,(make-symbol (concatenate 'stri ..
发布时间:2022-01-11 20:04:06 其他开发

在 static_assert() 编译时显示整数

这是我正在尝试做的简化版本 枚举优先{一个,乙,C,nbElementFirstEnum,};枚举秒{一个,乙,C,nbElementSecondEnum,};静态断言(第一::nbElementFirstEnum == 第二::nbElementSecondEnum,“枚举中的元素数量不同.");/*静态断言(第一::nbElementFirstEnum == 第二::nbElementSec ..
发布时间:2022-01-11 20:03:44 C/C++开发

GCC 的 wchar_t 有多大?

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 ..
发布时间:2022-01-11 20:03:36 C/C++开发

如何在 Scala 中打印扩展宏?

我正在用 Scala 编写一个宏,但是当我调用它时,我收到一条错误消息,提示“Double 不接受参数".很明显,宏构建 AST 的方式有问题.那么我怎样才能看到扩展的宏呢?有没有办法在运行时调用宏实现? 解决方案 为编译器提供 -Ymacro-debug-lite 或 -Ymacro-debug-verbose 选项. 在我的脑海中,打印的 AST 的细化由 -Yshow-tree ..
发布时间:2022-01-11 20:03:28 其他开发

C++11 中的空宏参数合法吗?

我有时会故意省略宏参数.例如,对于类似函数的宏,如 #define MY_MACRO(A, B, C) ... 我可以这样称呼它: MY_MACRO(, bar, baz) 技术上仍有 3 个参数;只是第一个是“空的".这个问题与可变参数宏无关. 当我这样做时,我在使用 -ansi(又名 -std=c++98)进行编译时收到来自 g++ 的警告,但在我使用 时却没有-std=c++0 ..
发布时间:2022-01-11 20:03:19 C/C++开发

宏扩展:带逗号的参数

我正在处理的代码使用了一些非常复杂的宏 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); 期望得到的 ..
发布时间:2022-01-11 20:03:08 其他开发

C中不同宏函数/内联方法的优缺点

根据C FAQ,“内联"基本有3种实用方法C中的代码: #define MACRO(arg1, arg2) do { \/* 声明 */\stmt1;\stmt2;\/* ... */\} while(0)/* (没有尾随 ; ) */ 或 #define FUNC(arg1, arg2) (expr1, expr2, expr3) 为了澄清这一点,表达式中使用了参数,逗号运算符返回最后一 ..
发布时间:2022-01-11 20:02:45 其他开发

Rust 中 __func__ 或 __FUNCTION__ 的等价物?

在 C 和 C++ 中,您可以通过使用 C99 & 的 __func__ 宏来获取当前正在执行的函数的名称.用于 MSVC 的 C++11 和 ___FUNCTION___. Rust 中是否有这样的等价物? __func__ 在 C 中的示例: #include "stdio.h"无效的搞笑你好(){printf ("你好来自 %s\n", __func__);}int main( ..
发布时间:2022-01-11 20:02:30 其他开发

在带引号的字符串中展开宏

可能重复: C 宏创建字符串 我有一个函数,它接受一个 char* 类型的参数,例如 f("string"); 如果字符串参数是在函数调用中动态定义的,如何在字符串体中展开宏? 例如: #define COLOR #00ff00f("abc 颜色"); 相当于 f("abc #00ff00"); 但是不执行扩展,函数接收字面意思是abc COLOR. 特别是,我需要将 ..
发布时间:2022-01-11 20:02:23 其他开发

EXTENDS 挑战:预处理器函数宏和类 oop

背景 我一直在使用 C 预处理器来管理和“编译"具有多个文件和构建目标的半大型 javascript 项目.这使您可以从 javascript 中完全访问 C 预处理器指令,如 #include、#define、#ifdef 等.这是一个示例构建脚本,您可以测试示例代码: #!/bin/bash导出 OPTS="-DDEBUG_MODE=1 -Isrc"对于 FILE 在 `find sr ..

使用 Scala 宏生成方法

我想在 Scala 2.11+ 中使用注释宏生成方法的别名.我什至不确定这是否可能.如果是,怎么做? 示例 - 鉴于以下情况,我希望注释宏扩展为 类 Socket {@alias(aliases = Seq("!", "ask", "read"))def load(n: Int): Seq[Byte] = {/* impl */}} 我希望上面生成的同义词方法存根如下: 类 Socke ..