我有一个由朋友共享的项目,其中包含有案例冲突的标题(例如:#include "xyz.h"
但实际文件为Xyx.h
)。
我该如何解决这个问题?
我决定编写一个python或bash脚本来解析所有#include
,然后搜索它们是否实际在目录中。这是一个好方法吗?
我应该使用哪一个,python或bash。我认为bash会更容易,因为它可以更轻松地处理文件和替换名称。但是我必须在我的bash脚本中编写正则表达式吗?
答案 0 :(得分:1)
一个单一防弹解决方案:
#include
话虽这么说,如果文件数量很少,并且文件不是太复杂,这可能是自动化的。但我的观点是,时间的增加不值得开发工具和错误的风险。
答案 1 :(得分:1)
这可能不像我最初想的那么具有挑战性。
from glob import glob as gg
# read in list of .h files and build dictionary
hfiles = dict([(r, r.lower) for r in gg('srcDir/*.h')])
# read in c file
with open('srcDir/cfile.c', 'r') as tmp:
cfile = tmp.read().split('\n')
# make include replacements (assuming NO text in file prior to include statments...adjust as needed)
for r in arange(len(cfile):
if ('# include' in cfile[r]) and (cfile[r].split()[-1] in hfiles):
key = cfile[r].split()[-1].lower()
cfile[r] = '# include ' + hfiles[key]
# now right out corrected c file
with open('dst/new_c_file.c', 'w') as fid:
fid.write('\n'.join(cfile))
这不是最漂亮的代码,我还没有对它进行测试(最好不要覆盖你的文件,直到你测试过它),但一般的方法应该有效并且非常灵活。