所以,我知道这不是提出问题的最佳方式——我猜答案已经是“不”。
但无论如何我都会尝试一下,以防有人碰巧知道一些可以应用的“黑魔法”。
我正在尝试用 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]])
即使我必须注入一些汇编代码来执行此操作,那也“没问题”。
只是不知道是否有人对这个话题有任何“疯狂的想法”。
但我不知道该怎么做。
#define Tensor(...) Tensor(#__VA_ARGS__)
C 中的宏替换不是递归的,因此
Tensor
在第一次替换后不会再次进行宏处理。
在定义此宏之前声明并定义
Tensor
函数,或使用 #undef
在函数的任何声明或定义之前删除宏(如有必要,然后重新定义宏)。