You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

头文件添加数据量过大有何解决办法?多选择类游戏大量题目场景如何优化

原有方案的缺陷

你当前的思路存在多个明显问题,完全不适合百级题量的场景:

  • C/C++ 的头文件(.h)设计定位是声明接口,而非存放函数实现,除非是inline或模板函数,否则将函数实现写在.h中会大概率触发多源文件引入后的重复定义编译错误
  • 维护成本极高:新增题目需要新增头文件、手动在主文件添加对应include语句、手动调用对应questionX函数,仅几百个题目就要写上千行冗余代码,调整通用逻辑需要逐个修改所有头文件,可维护性为0
  • 编译效率极低:引入数百个头文件后全量编译速度会大幅下降,修改任意单题内容都需要触发全项目重新编译
推荐的替代方案

按你的编程熟练度可以选择两种方案:

入门级方案(无额外学习成本,适合新手)

将所有题目相关逻辑收拢到一对源文件中,用结构化的方式存储所有题目,不需要拆分多个文件:

  1. 首先定义通用的题目结构体,写在questions.h中:
#pragma once

// 可根据你的需求自由增减字段
typedef struct {
    const char* title;          // 题干内容
    const char* options[4];     // 四个选项内容
    int correct_option_index;   // 正确选项的索引(从0开始计数)
} Question;

// 对外提供获取所有题目的接口
int fetch_all_questions(Question** question_list);
  1. 在questions.cpp中存放所有题目内容、实现接口:
#include "questions.h"

// 所有题目统一存放在静态数组中,新增题目直接往数组里加元素即可
static Question g_question_pool[] = {
    {
        "1+1的运算结果是多少?",
        {"A. 1", "B. 2", "C. 3", "D. 4"},
        1
    },
    {
        "以下哪种语言属于编译型语言?",
        {"A. Python", "B. JavaScript", "C. C++", "D. PHP"},
        2
    },
    // 其余几百个题目都按上述格式追加即可
};

int fetch_all_questions(Question** question_list) {
    *question_list = g_question_pool;
    return sizeof(g_question_pool) / sizeof(Question);
}
  1. 主逻辑文件只需要引入一次questions.h,调用接口拿到所有题目后循环处理即可,不需要再写数百个include、也不需要手动调用数百个函数。新增题目只需要在g_question_pool数组里加一行配置即可,不需要修改其他代码。

进阶方案(适合题量持续增长、需要非技术人员参与配置的场景)

将题目内容完全从代码中剥离,使用JSON、CSV或自定义纯文本格式存放在单独的配置文件中,代码仅实现通用的配置读取、题目渲染、正误判断逻辑。
这种方案的优势是修改、新增题目完全不需要修改代码、不需要重新编译程序,甚至可以实现运行时动态加载新题目。

内容的提问来源于stack exchange,提问作者dRacoons

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:09:02