- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 C 编程方面不是很有经验,我正在尝试使用管道编写程序。问题是,当我尝试编译它时,它给了我一个我无法理解的奇怪错误,即使通过阅读 Stackoverflow 中的其他类似问题也是如此。
错误是下一个:
ejercicio.c:91:8: error: called object type 'ssize_t' (aka 'long') is not a function or function pointer
read(tuberiaCom[0], login, sizeof(int));
~~~~^
ejercicio.c:103:8: error: called object type 'ssize_t' (aka 'long') is not a function or function pointer
read(tuberiaCom[0], *checkuser, 256);
受影响的代码是这个:
int main(){
int tuberiaCom[2];
int fduser;
int login = 0;
char username[256];
char answer[1024];
char checkuser[256];
char command[64];
char program[16];
char options[48];
char *line = NULL;
pid_t familia;
size_t len = 0;
ssize_t read;
if(pipe(tuberiaCom) == -1){
fprintf(stderr, "Pipe error\n");
exit(1);
}
switch(familia = fork()){
case -1:
fprintf(stderr, "Fork error\n");
exit(1);
break;
case 0:
scanf("Please, write your username %s", username);
write(tuberiaCom[1], &username, strlen(username));
read(tuberiaCom[0], login, sizeof(int)); /////////Line 91
if(login == 1){
printf("User %s exists, you can continue", username);
}
else{
printf("There is no user called %s, the program will finnish", username);
exit(1);
}
break;
default:
read(tuberiaCom[0], *checkuser, 256); /////////Line 103
fduser = open("users.txt", O_RDONLY);
while ((read = getline(&line, &len, fduser)) != -1){
if(*line == *checkuser){
login = 1;
break;
}
}
write(tuberiaCom[1], &login, sizeof(int));
break;
}
......
最佳答案
您有一个名为 read
的变量,当您调用 read(2)
时,它会使编译器与函数 read(2)
混淆。将您的变量 read
重命名为其他名称。
关于c - 错误 : called object type 'ssize_t' (aka 'long' ) is not a function or function pointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47057353/
这个问题在这里已经有了答案: GCC with -std=c99 complains about not knowing struct timespec (3 个答案) 关闭去年。 我目前遇到错误
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
这个问题在这里已经有了答案: Where is ssize_t defined in Linux? (2 个答案) 关闭 3 年前。 在我的代码中我使用了 ssize_t 但是当我尝试编译项目时我得
我正在寻找一种 C# 整数数据类型,它可以在 32 位计算机上保存 32 位有符号值,在 64 位计算机上保存 64 位有符号值。 其原因是对接收 ssize_t 参数的 C 函数的 P/Invoke
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我正在查看一些套接字代码。它将“wb”声明为长度: ssize_t wb; wb = sendto(sock, buf, len, 0, (struct
我对以下打印输出有疑问: int logn = 32; size_t count = (size_t)1<
我是 C 的新手,最近遇到了不匹配的数据类型及其内存分配的问题。我正在编写一个非常简单的程序来计算使用 Linux 系统调用读取的文件的异或校验和。 我的问题是:在将 off_t 或 ssize_t
在我的项目中使用的源文件中,ssize_t 和 size_t 变量之间有一个比较: ssize_t sst; size_t st; if(sst == st){...} 我想摆脱警告: warning
我正在写一个涉及网络I/O的程序,所以使用了send和recv,它们是POSIX函数。它们返回 ssize_t,这也是 POSIX 特定的。 wrapper 看起来像这样的 ATM: ssize_t
size_t 被声明为 unsigned int 所以它不能表示负值。 所以有 ssize_t 这是signed 类型的 size_t 对吗? 这是我的问题: #include #include
代码 我有一个函数,我可以使用四种可能的方式中的一种来编写: int do_or_die(int retval); int do_or_die(ssize_t retval);
C 标准(ISO/IEC 9899:2011 或 9899:1999)定义了一个类型 ptrdiff_t在 . POSIX 标准(ISO/IEC 9945;IEEE Std 1003.1-2008)
操作系统:Debian 9 (Linux 4.9) 编译器:GCC 8.2 目前我包括 (其中定义了 size_t)和 (其中定义了大多数整数类型),但我仍然没有 ssize_t . 在哪里定义的?
这个问题在这里已经有了答案: Signed vs. unsigned integers for lengths/counts (4 个回答) 关闭9年前. 在我的代码中,我不使用 int 或 unsi
我正在学习为Linux编写一个简单的驱动程序(我已经安装了Lubuntu)。但我有问题。我的 IDE Eclipse cdt 看不到某些类型。无法解析类型“ssize_t”但我已包含并在项目中添加包含
当我使用 ndk-build 编译时,它显示一条错误消息: warning: format '%zd' expects argument of type 'signed size_t', but ar
考虑: ssize_t write(int fd, const void *buf, size_t count); 必须对结果进行签名以说明错误等情况下的 -1,因此是 ssize_t。但是,当要求超
您好,我有几个问题。如果有人能回答我会很高兴:)我正在尝试为 lcd 16X2 模块编译 Linux 驱动程序。我试图在我的代码中使用 struct file_operations();1.我注意到其
我有一个 C++ 头文件 socket_client.h连同 C++ 源文件 socket_client.cc .在 socket_client.h ,我有这样的代码示例: #include #in
我是一名优秀的程序员,十分优秀!