将常量粘贴到 asm 代码块中
我有这个 C 宏: #define syscall(number) \ ({ \ asm volatile ( \ ".set noreorder\n" \ "nop\n" \ "syscall "#number"\n" \ );\ }) 当我用整数调用…
C/C++宏扩展到参数,参数作为字符串
我有许多变量的名称与工程规范文档中的元素相同,因此名称的字符串版本也很有用。 我发现自己经常使用这样的宏: #define MACRO(a) a, #a 典型用法是…
在多级宏调用中字符串化宏参数
我有一个像这样的宏: #define SHOW_EXPR(x) printf ("%s=%d\n", #x, (x)) 它有效: #define FOO 123 int BAR = 456; SHOW_EXPR(FOO+BAR); 这将按预期…
如何向带引号的正则 (qr) 表达式添加修饰符
有没有一种简单的方法可以将正则表达式修饰符(例如“i”)添加到带引号的正则表达式中?例如: $pat = qr/F(o+)B(a+)r/; $newpat = $pat . 'i'; # Th…
使用 C 预处理器读取变量
当尝试使用 C 预处理器进行串联时,我遇到了以下问题: #define substitute(id) var##id int main() { int var0 = 999; int var1 = 998; int var2 = 9…
C++ 中的奇怪定义预处理器
我遇到过这个 #define DsHook(a,b,c) if (!c##_) { INT_PTR* p=b+*(INT_PTR**)a; VirtualProtect(&c##_,4,PAGE_EXECUTE_READWRITE,&no); *(INT_PTR*)&…
如何在串联之前引起宏扩展?
#define JNI_DECLARE( classname, methodname ) \ classname ## methodname( JNI* env ) #define JAVA_CLASS Java_com_example void JNI_DECLARE( JAV…
如何使用 cpp 将宏转换为字符串?
GNU 的 cpp 允许您将宏参数转换为字符串,如下所示 #define STR(x) #x 然后,STR(hi) 被替换为 "hi" 但是您如何转换将宏(不是宏参数)转换为字符串?…
预处理器愚蠢的做法(对 #include 进行字符串化)
注意:这个问题与 OpenCL 本身无关......请检查最后一段以获取我的问题的简洁陈述。但提供一些背景信息: 我正在编写一些使用 OpenCL 的 C++ 代码。我…
使用 C 预处理器将 int 连接到字符串
我试图弄清楚如何使用 C 预处理器将 #define'd int 连接到 #define'd 字符串。我的编译器是 CentOS 5 上的 GCC 4.1。该解决方案也适用于 MinGW。 我想…
使用 %s 进行格式化时,# 代表什么
我遇到了这个断言示例,并且想知道 # 的用途: #define ASSERT( x ) if ( !( x ) ) { \ int *p = NULL; \ DBGPRINTF("Assert failed: [%s]\r\n Haltin…
预处理#define
我无法理解预处理器的工作原理以及 ## 在这个特定示例中代表 #include #define TEMP_KEY(type,Key) (TEMP_##type | Key) enum TEMPKey_Type { TEMP_UN…
预处理器宏 GCC:粘贴 x 和 x 不会给出有效的预处理标记
#define PATH "yagh/headers/" #define FILNAME "includefile" #define CONCAT(a__, b__) CONCAT_DO(a__, b__) #define CONCAT_DO(a__, b__) a__##b__…