第一次来,希望标题没问题。
我有一个 .h 填充物:
JRAPI u64 list_directory_contents(char *directory);
在 .c 文件中,我有一个以以下开头的函数:
u64 list_directory_contents (char *directory) {
这里有一段代码:
// Convert directory name to wide-character string
u16 dir_address[268];
u64 dest;
int errorD = mbstowcs_s(&dest, dir_address, 268, directory, 268);
这效果很好。
- 现在的问题-: 我想将此代码放在一个新函数中。 在我制作的 .h 文件中:
u16 get_absolute_path(char *directory);
在我制作的 .c 文件中:
u16 get_absolute_path(char *directory) {
u16 return_address;
u64 dest;
int errorDir = mbstowcs_s(&dest, return_address, 268, directory, 268);
return return_address;
}
这是在旧地方发起的:
u16 dir_address = get_absolute_path(directory);
现在不行了。 Clang 说我需要在 return_address 前面放一个 & :
int errorDir = mbstowcs_s(&dest, &return_address, 268, directory, 268);
但是,与其他问题相比,它的价值不再是它应该有的,并且使一切都停止工作。
将此代码放入函数中,我做错了什么? 非常感谢您的帮助!
u16 = 无符号 16 位整数,无符号短整型。 u64 = 无符号 64 位整数,无符号 long long。
我已经玩了几个小时的指针和地址、字符串大小、谷歌等。现在我迷路了。
看一下有效的代码:
u16 dir_address[268];
u64 dest;
int errorD = mbstowcs_s(&dest, dir_address, 268, directory, 268);
具体在
dir_address
,然后看不起作用的代码:
u16 return_address;
u64 dest;
int errorDir = mbstowcs_s(&dest, return_address, 268, directory, 268);
请注意,您没有像使用
return_address
那样将 dir_address
声明为数组。将其更改为:
u16 return_address[268];