c - 是否可以使用预处理器对数组进行排序?

标签 c sorting gcc c-preprocessor

我有很多很长的数组。不可能进行运行时排序。手动对它们进行分类也很耗时。此外,以后可以按任何顺序添加新元素,所以我想使用 C 预处理器或可能有任何编译器标志(GCC)按值对它们进行排序?

例如:

sometype S[] = {
  {somevals, "BOB", someothervals},
  {somevals, "ALICE", someothervals},
  {somevals, "TIM", someothervals},
}

必须这样排序:

sometype S[] = {
   {somevals, "ALICE", someothervals},
   {somevals, "BOB", someothervals},
   {somevals, "TIM", someothervals},
}


已解决

好的,这是我的解决方案:

  1. 手动将每个数组复制并粘贴到名为 tobesorted.c 的临时文件中
  2. 按第 2 列排序:sort -b -i --key=2 tobesorted.c
  3. 将输出复制并粘贴回原始文件。

实际上,如果有可能直接从预处理器调用“排序”会很好(我曾希望至少 GCC 以某种方式支持此类功能,但似乎不支持)。

最佳答案

这样做。

  1. 将您的巨型数组放入文件中。

  2. 使用内置的 sort

    对文件进行排序
  3. 编写一个小程序以从文件创建 C 代码。写C程序的C程序就可以了。您可以使用 Python 和它的一些很酷的模板包来简化这项工作。

  4. 编译剩余程序,该程序由转换为 C 代码的排序文件和程序的其余部分组成。

关于c - 是否可以使用预处理器对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2629219/

相关文章:

c - 无法将单个 Char 与 Chars 数组进行比较

java - 如何在 Eclipse 中有效地调试用 JNI 包装的 C 代码? (安卓开发)

c++ - 错误: cast from ‘void*’ to ‘int’ loses precision [-fpermissive] in makefile

PHP按多个条件自定义排序字符串数组

c - gdb 无法运行带有 "File format not recognized"的 ELF 64 位程序

c - 如何从c中的文件中读取带有空格、整数和浮点值的字符串?

c - 不确定为什么冒泡排序代码有段错误

c - 使用 STM32 Arm 进行嵌入式系统编程的 STM32F103RB 和 STM32F4

jquery - 有没有办法在 JQuery Datatable 中的标题文本旁边显示排序图标?

c - 在 C 中根据另一个数组对数组进行排序