【发布时间】:2016-01-12 08:18:52
【问题描述】:
是否可以为 C 预处理器定义一个以数组为参数并扩展为 <type of array elements>_string 的宏?例如,如果x 在整数数组中,则使用参数x 调用的宏应扩展为int_string。
我试过了
#define TypePaste(array) typeof(array[0])##_string
但它会扩展为)_string。
即使对## 操作数使用多个间接级别,宏也无法正确展开。
【问题讨论】:
-
将预处理器指令想象成一种在编译之前轮到它的愚蠢机制,用于字符串操作,其中字符串是代码行。
-
有很多方法,但这取决于您是否希望宏创建新类型、新变量名或引用现有类型或变量。
-
听起来有点像 xy 问题。你想达到什么目的?
-
@Ludin 宏应该扩展为现有函数的名称。我想为每个现有类型定义一个函数
<type>_string,然后使用宏根据给定数组的类型选择正确的函数。 -
@JensGustedt 我想定义一个通用函数来对不需要将数组类型作为参数传递到的数组进行排序。