我有一个包含3个文件的文件夹:
想法是,仅根据符号编译一个文件(如果未定义)。
在main.c中,我添加了以下几行:
#ifdef MY_SYMBOL
#include "file1.c"
#else
#include "file2.c"
#endif
我发现的问题是,当定义 MY_SYMBOL 时, file1.c 被编译了两次,因为在makefile中提到了它会编译每个文件夹中的所有源文件。
限制是我不应该修改Makefile!因此,为避免这种情况,我将 file1.c 和 file2.c 的扩展名修改为 file1.h 和 file2.h < / strong>,分别保留它们的内容(所有私有函数的定义),然后按以下方式更新main.c的内容:
#ifdef MY_SYMBOL
#include "file1.h"
#else
#include "file2.h"
#endif
考虑到上述限制,最后的建议是最好的方法吗?
请注意, file1.c 和 file2.c 包含相同的功能,但实现方式不同。
答案 0 :(得分:1)
在其他情况下,C程序员通常不期望以下之一:
所以我会用两种方式说出,您将以某种方式“使”其他人“惊讶”。
如果一定不要更改$(function(){
$('.ui.button').click(function(){ showmodal() })
function showmodal() {
$('.ui.modal').modal('show');
}
if ($('.ui.dropdown').length) {
$('.ui.dropdown').dropdown({
showOnFocus: false
});
}
})
(顺便说一句,为什么?),则可以将实现变体封装在makefile
文件中的预处理指令中:
.c
此外,您将需要一个头文件,该文件声明相应实现公开的所有功能。