所以我有一个文件main.c,其中包括我制作的头文件utils.h,其中包含对源文件utils.c中函数的前向引用
在 utils.c 中:
我有一个接受字符串数组作为参数的函数,并将其作为菜单打印出来:
void showMenu(const char *menu[])
{
int menulen = sizeof(menu)/sizeof(*menu);
int i;
for(i = 0; i < menulen; i++)
{
printf("[%d] .. %s\n", (i+1), menu[i]);
}
}
在 main.c 中:
我简单地调用这个函数:
const char *menu[] =
{
"Customers",
"Orders",
"Products"
};
int main(void)
{
showTitle("Customer Orders System");
int menulen = sizeof(menu)/sizeof(*menu);
showMenu(menu);
getch();
}
我的问题:
我的showMenu函数正在计算数组的长度,然后遍历它,打印字符串。当函数位于main.c时,这曾经可以工作,但我需要在单独的文件中组织这个项目。
现在计算长度为1。经过一些调试,我认为这是一个与指针相关的问题,但我似乎解决了它。调用后showMenu的参数是类型
const char** menu
只有我的原始数组的第一个元素。
我尝试推迟参数,将数组的指针传递给它,并且同时传递两者。
奇怪的是,同一行代码在 main 函数中工作。我真的不想通过向函数添加一个数组参数长度来解决这个问题。
任何帮助是极大的赞赏。