gpt4 book ai didi

c 宏重复参数

转载 作者:行者123 更新时间:2023-11-30 16:22:09 25 4
gpt4 key购买 nike

我正在编写一个带有函数签名的跟踪器:

void AO_TRACE(int level, char *macrostring, uint16_t type, uint32_t argument1, uint16_t argument2);

并且有有用的宏用于从宏生成字符串

#define strmacro(s) #s

我这样调用我的函数:

AOCS_TRACE(LEVEL_TRACE,strmacro(TRACE_qtn_guidance_TCOUNT0_VALUE), TRACE_qtn_guidance_TCOUNT0_VALUE, tcount[0],0);

是否可以编写一个宏来调用这样的函数

AOCS_TRACE(LEVEL_TRACE,newmacro(TRACE_qtn_guidance_TCOUNT0_VALUE), tcount[0],0);

换句话说,编写一个宏,仅放置输入的字符串表示形式和输入本身。我试过:

#define TRACE(s) #s, s

#define TRACE(s) (#s, s)

但是它不能正常工作

最佳答案

您的宏工作正常。

演示如何操作的示例代码:

#include<stdio.h>
#include <stdint.h>
#define macro(s) #s,s
const int TRACE_qtn_guidance_TCOUNT0_VALUE= 123;
void AO_TRACE(int level, char *macrostring, uint16_t type, uint32_t argument1, uint16_t argument2) {
printf("Level: %d, String: <%s>, Type: %d: Arg1: %d, Arg2: %d\n", level, macrostring, type, argument1, argument2);}
int main(){
AO_TRACE(1, macro(TRACE_qtn_guidance_TCOUNT0_VALUE), 2, 3);
return 0;
}

输出符合预期

Level: 1, String: <TRACE_qtn_guidance_TCOUNT0_VALUE>, Type: 123: Arg1: 2, Arg2: 3

关于c 宏重复参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54549811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com