我不是 C 程序员,但我需要为我们的一个可以用 C 扩展的应用程序获得一个简单的 POC。我已经通过直接通过我的模块传递数据来编译代码,我的想法是传递相反的内容传入的字符串以证明我的代码实际上对数据做了一些事情。
我目前有这段代码可以将每个输入直接传递给输出:
INFA_CTSetData(outputGroupPorts[i],
INFA_CTGetDataStringM(inputGroupPorts[i]));
INFA_CTGetDataStringM
函数定义为:
char* INFA_CTGetDataStringM(INFA_CT_INPUTPORT_HANDLE dataHandle);
char *mystrrev(char *s)
{
char *start = s, *t = strchr(s, '\0'); /* point to end of string */
/*
* Swap the values at the beginning (pointed to by 's') and the end
* (pointed to by 't'); 's' and 't' meet in the middle.
*/
for ( --t/* skip terminating null character */; s < t; ++s, --t )
{
/* Just your run-of-the-mill swap here. */
char temp = *s;
*s = *t;
*t = temp;
}
return start;
}
我没有做的是将调用的结果传递给INFA_CTGetDataStringM
throughmystrrev
和 on INFA_CTSetData
。
INFA_CTSetData(outputGroupPorts[i],
mystrrev(INFA_CTGetDataStringM(inputGroupPorts[i])));
在编译时产生这些错误
p_Reverse.c:155: error: conflicting types for 'mystrrev'
p_Reverse.c:145: error: previous implicit declaration of 'mystrrev' was here
多年以来,Visual Basic 和 C# 让我的生活变得太容易了——有人可以帮我让这段代码正常工作吗?我盲目地尝试添加*
并&
得到不同的编译器错误 - 现在我很难过。