编译 flock 结构C++时出现错误消息



>我正在尝试使用 fcntl(( 系统调用在文件上创建锁,但为此,您需要传入 flock 结构的实例,该结构是在 fcntl.h 文件中定义的结构。我看过 Youtube 视频,在互联网上搜索解决方案,但我仍然无法弄清楚如何让我的代码编译而没有错误。我创建一个羊群结构的实例,如下所示:

#include <fcntl.h>
int start = calculate_buffer(i);
int lock_size = calculate_lock_size(i, j);
int pid = getpid();
struct flock fl{start, lock_size, pid, F_UNLCK, SEEK_SET};

如果您认为问题在于我传递参数的顺序,那不是问题,因为这就是它们在 macOS 上的排序方式(为什么它与我不知道的 Linux 不同(。无论如何,我尝试使用以下方法编译我的代码:

g++ main.cpp
gcc main.cpp

两者都会产生以下错误:

main.cpp:111:20: error: expected ';' at end of declaration
struct flock fl{start, lock_size, pid, F_UNLCK, SEEK_SET};
^
;
1 warning and 1 error generated.

为什么会这样?我能做些什么来修复它? 以下是我使用过的一些参考资料,表明这正是它应该做的:

https://pubs.opengroup.org/onlinepubs/009695399/functions/fcntl.html https://www.youtube.com/watch?v=whYnqxKSBBo&t=339s

初始值设定项列表需要在要初始化的变量和列表本身之间相等。您的声明应为:

struct flock fl = {start, lock_size, pid, F_UNLCK, SEEK_SET};

相关内容

  • 没有找到相关文章

最新更新