在 C 中为不带引号的函数提供字符串

问题描述 投票:0回答:1

所以,我知道这不是提出问题的最佳方式——我猜答案已经是“不”。

但无论如何我都会尝试一下,以防有人碰巧知道一些可以应用的“黑魔法”。

我正在尝试用 C 语言设计一个函数,它基本上以字符串作为输入,然后进行解析以从中获取相关数据。

在本例中,该函数是“Tensor”,因此您可以执行如下操作:

a = Tensor("[[1,2], [3,4]]")

或者

b = Tensor("[1, 2, 3, 4]")

或者

c = Tensor("[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]")

基本上任何合理的组合,但函数中的代码被作为字符串处理。

但是,我想知道是否有任何方法可以处理这个问题,但能够删除字符串的“外引号”,所以它更像是使用Python。 (在当前状态下它只是不“优雅”)

或者从第一个例子开始,我喜欢的是:

a = Tensor([[1,2], [3,4]])

即使我必须注入一些汇编代码来执行此操作,那也“没问题”。

只是不知道是否有人对这个话题有任何“疯狂的想法”。

但我不知道该怎么做。

c string
1个回答
0
投票
#define Tensor(...) Tensor(#__VA_ARGS__)

C 中的宏替换不是递归的,因此

Tensor
在第一次替换后不会再次进行宏处理。

在定义此宏之前声明并定义

Tensor
函数,或使用
#undef
在函数的任何声明或定义之前删除宏(如有必要,然后重新定义宏)。

© www.soinside.com 2019 - 2024. All rights reserved.