C:当放入自己的新函数时,部分函数将停止工作

问题描述 投票:0回答:1

第一次来,希望标题没问题。

我有一个 .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。

我已经玩了几个小时的指针和地址、字符串大小、谷歌等。现在我迷路了。

c function-pointers
1个回答
1
投票

看一下有效的代码:

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]; 
© www.soinside.com 2019 - 2024. All rights reserved.