虽然我已经完成了大量Java编程,但我还是C语言的新手。
我正在使用 int 来存储从1到52的一副扑克牌的指定代码,例如1是“ Ace of Hearts”,15是“ Two of Diamonds”,等等。出于显示目的,我想将它们翻译成英语短语,即传入1并返回“ Ace of Hearts”。我在定义一个函数以及我的编译器将接受的对该函数的调用时遇到很多麻烦。
我知道字符串在C语言中是有问题的,至少对于那些还没有做很多事情的人而言。我了解指针及其操作符,但并没有太多在程序中使用它们的实践。
我正在将MS VisualStudio 2019与NVidia CUDA工具包一起使用。我已经在Web论坛中搜索了类似情况,并且编写了看起来应该可以工作的代码,但是编译器每次都拒绝它。
void main() {
...
char descriptor[14];
designationTranslator(1, descriptor);
}
void designationTranslator(int cardDesignation, char* desc ) {
switch (cardDesignation) {
case 1: strcpy(desc, "Ace of Hearts");
break;
default:
break;
}
}
这只是我尝试过的相同基本代码的众多版本中的一个,并且没有一个版本会通过验证。我已经添加和删除了*和&,并且在所有可能的地方都使用了不同的变量声明等,但没有任何效果。无论我如何编写代码,我都只会收到“无法找到designationTranslator”错误。
答案 0 :(得分:2)
您正在尝试在定义designationTranslator
之前调用它。
在调用前,您需要声明 designationTranslator
或在designationTranslator
之前移动main
的定义。
所以这个:
void designationTranslator(int cardDesignation, char* desc );
int main()
{
...
}
void designationTranslator(int cardDesignation, char* desc )
{
...
}
或者这个:
void designationTranslator(int cardDesignation, char* desc )
{
...
}
int main()
{
...
}