在C语言中,可以使用宏(Macro)来定义条件打印的功能。宏是一种预处理指令,它在编译之前对代码进行文本替换。通过定义一个条件打印宏,可以根据特定条件决定是否输出某些信息。 基础概念 宏定义使用#define预处理指令。条件打印宏通常结合#ifdef、#ifndef、#if等预处理指令来实现。
#define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义宏(define macro)。 下面是宏的申明方式: #define name( parament-list ) stuff 其中的 parament-list 是一个由逗号隔开的符号表,它们可能出现在stuff中。 举例: #define SQUARE( x ) x * x 这个宏接收一个参数...
參考:C #define macro for debug 2、 1#include <stdio.h>2#include <stdlib.h>3#include <stdarg.h>45#defineDEBUG 16//#undef DEBUG78#defineDEBUG_PRINT( ...) \9do{if(DEBUG) fprintf(stdout, ##__VA_ARGS__); }while(0)101112voidmain()13{14DEBUG_PRINT("China.\n");1516return;17} 參...
#ifdef DEBUG #define DEBUG_PRINT(fmt, args...) fprintf(stderr, fmt, ##args) #else #define DEBUG_PRINT(fmt, args...) #endif 这个宏定义实现了一个调试信息输出的功能。当编译时定义了DEBUG宏时,调用DEBUG_PRINT会将信息输出到标准错误流中;否则,DEBUG_PRINT会被替换为空语句。 字符串处理 宏可以用...
这是一个variable arguments的printf,可以像使用库函数一样使用DEBUG_PRINT()。 2、Pasting Tokens/粘贴token/将token和在...上 Each argument passed to a macro is a token, and sometimes it might be expedient to paste arguments together to form a new token. This could come in handy if you have ...
#define PRINTMACRO(x) #x " = " MACROTOSTR2(x) #pragma message(PRINTMACRO(MACROPARAM(SOMEMACRO))) 上述代码块在编译时会打印出MACROPARAM(SOMEMACRO) = new int(123456);,也就是宏展开后的内容。 因此,当宏出现问题时,可以使用该方法打印出宏展开后的内容,然后调试展开后的内容,找到错误原因,接着同...
define机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义(define macro)。 下面是宏的声明方式: //parament-list 参数列表#definename(parament-list) stuff//后面不要加分号; 其中的parament-list是一个由逗号隔开的符号表,它们可能出现在stuff中。
#define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义宏(define macro)。 下面是宏的申明方式: #define name( parament-list ) stuff 其中的 parament-list 是一个由逗号隔开的符号表,它们可能出现在stuff中。 举例:
// PrintData(x, 16, printDataType::HALF); //在AIV上执行 AscendC::SetKernelMode(KernelMode::AIV_MODE); //调用kernel函数 ICPU_RUN_KF(leakyrelu_custom, blockDim, x, y, usrWorkSpace, tiling); // use this macro for cpu debug // PrintData(y, 16, printDataType::HALF); WriteFile(...
Macro expansion too long 宏的扩展以后太长 Mismatched number of parameters in definition 定义中参数个数不匹配 Misplaced break 此处不应出现break语句 Misplaced continue 此处不应出现continue语句 Misplaced decimal point 此处不应出现小数点 Misplaced elif directive 不应编译预处理elif ...