小编Nic*_*k S的帖子

限制为数组大小的目的是什么?

我理解是什么restrict意思,但我对这种用法/语法有点困惑:

#include <stdio.h>

char* foo(char s[restrict], int n)
{
        printf("%s %d\n", s, n);
        return NULL;
}

int main(void)
{
        char *str = "hello foo";
        foo(str, 1);

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

成功编译 gcc main.c -Wall -Wextra -Werror -pedantic

在这种情况下如何限制工作并由编译器解释?

gcc版本:5.4.0

c gcc restrict-qualifier

8
推荐指数
2
解决办法
125
查看次数

使用TCP通过套接字传输文件时陷入困境

我写程序,它工作正常,但是我想用sendfile()重写它,现在我陷入了循环。

服务器端:

  • 发送名称=好的
  • 发送md5校验和=确定
  • 发送大小=确定
  • 发送文件= ko

客户端:

  • 记录名称=好的
  • recv md5 cecksum =好的
  • 接收大小=可以
  • 创建目录并创建文件=确定
  • 将数据写入创建的文件= ko

PS在以前的程序版本中,我花了一些时间,但这取决于我为什么使用printf多少?例如,我添加一行,并保留printf程序,将其删除,即可正常工作。

UPDT:重写代码客户端/服务器

客户

/* Received file name */
  int rc_byte = 0;
  rc_byte = recv(fd, rx_tx_file->out_name, sizeof(rx_tx_file->out_name),0);
  if (rc_byte < 0){
    perror("Failed to receive file name: ");
    exit(-1);
  } else
    printf("Recv out name %s\n", rx_tx_file->out_name);
  //printf("file name rc %s\n", rx_tx_file->out_name);                                                                           
  trimm_path_name(rx_tx_file);


  /* Received md5sum */
  rc_byte = recv(fd, rx_tx_file->md5sum, sizeof(rx_tx_file->md5sum), 0);
  if (rc_byte < 0) {
    perror("Failed to receive check sum: "); …
Run Code Online (Sandbox Code Playgroud)

c sockets tcp tcp-ip sendfile

2
推荐指数
1
解决办法
486
查看次数

标签 统计

c ×2

gcc ×1

restrict-qualifier ×1

sendfile ×1

sockets ×1

tcp ×1

tcp-ip ×1