在C程序中使用C函数; “多重定义”错误
我试图在已编写的C程序中使用
this code for the Porter stemming algorithm.我按照文件末尾附近的说明将代码用作单独的模块.我创建了一个文件,stem.c,它在定义之后结束并且有
extern int stem(char * p,int i,int j) ... 它在Xcode中工作得很好,但是在使用gcc 4.1.1的Unix上它不起作用 – 奇怪,因为通常我在两者之间移动没有问题.我收到了错误
我看过网上看起来似乎有很多我可能有错的东西,但我不确定头文件,extern“C”等的组合是什么样的. 解决方法
该错误意味着符号(词干)在多个模块中定义.
您可以根据需要在多个模块中声明符号.函数声明如下所示: int stem(char * p,int j); 你不需要“extern”关键字,虽然它不会伤害任何东西.对于函数声明,它是隐含的. 函数的定义如下所示: int stem(char * p,int j) { /* body of your function */ } “乘法定义”错误表示您有两个模块,其中包含相同功能的定义.这通常意味着您有两个定义函数的文件,或两个#include定义函数的文件的文件.通常,您不应将函数定义放在#include的文件中.将定义放在.c,.cpp或.cc文件中,只需在.inc文件中放入声明即#include. 例如,您可以在其中创建一个带有此文件的stem.h文件: int stem(char * p,int j); 然后,#include“stem.h”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |