我有用C编写的科学模拟代码,它从命令行运行。用户在model.c
文件中将输入模型作为一组C子程序提供,然后在运行时将其编译为代码。有条件的编译/用gcc链接
某些模型属性并不总是与特定问题相关,但目前用户仍然需要为该属性提供一个空的虚拟函数以便代码进行编译。
只有当用户提供的model.c
不包含该属性的子例程时,是否可以为源代码中嵌入的模型属性设置虚拟子例程?
作为一个例子,如果model.c
包含一个称为temperature()
子程序中,代码应该链接到的那一个,而不是称为temperature()
子程序中src/dummy_function.c
找到。如果model.c
没有temperature()
,则编译器应使用src/dummy_function.c
中的虚拟函数。
如果可能,我宁愿在model.c
文件中不要求预处理器指令的解决方案。
使用C++类和继承怎么样?您可以创建一个父类,将所有函数实现为假。然后每个想使用函数的人都可以在派生类中简单地覆盖它。 – Nippey
这确实是一种选择。然而,用C++重新实现整个代码将是一项重大的努力。我希望有一个简单的解决方案,不需要重新设计代码。 –
如何使用'dummy_function.c',将其重命名为'main.c'并将其提供给用户?想要使用函数的用户可以用真实函数替换该虚拟函数。 – Beta