Как использовать константу PIPE_BUF в C? - PullRequest
0 голосов
/ 26 октября 2011

Мне нужно использовать PIPE_BUF в моей программе, который и для размера PIPE_BUF я буду передавать параметры в аргументе командной строки. Может кто-нибудь помочь мне, как использовать его в коде? Я написал код, но яполучение ошибок

Я написал код

#define BUFFER_SIZE PIPE_BUF;

В main ()

char buffer[BUFFER_SIZE];
PIPE_BUF=argv[4];

Но это дает мне ошибку, говоря, что ошибка ']' пройдена раньше ';'токен и ошибка в main ()

Ответы [ 3 ]

4 голосов
/ 26 октября 2011

Избавиться от точки с запятой :

#define BUFFER_SIZE PIPE_BUF;
                            ^

Если оставить его, код, который достигает компилятора, будет:

char buffer[4096;];

Во-вторых, вы не можете присвоить PIPE_BUF.Это не lvalue.Это как сказать

4096 = argv[4];
1 голос
/ 13 февраля 2013

Вы также должны включить файл limits.h, который определяет PIPE_BUF.

0 голосов
/ 26 октября 2011

Не зная, какую проблему вы пытаетесь решить, возможно, вы хотели сделать что-то подобное, предполагая, что вы используете C в качестве языка программирования:

// Usage: myprog buf_size buf_data
int main()
{
  if (argc<3)
  {
    fprintf(stderr,"Usage: myprog buf_size buf_data\n");
    return 1;
  }

  /* Get the buffer size */
  size_t pipe_buf_size=atoi(argv[1]);

  /* Allocate enough space to hold the buffer data */
  char *pipe_buf=(char *) malloc(pipe_buf_size);

  /* Copy the buffer data from the passed in argument */
  memcpy(pipe_buf,argv[2],pipe_buf_size);

  /* Do some work with it */
  ...

  /* Free the memory allocated for the buffer */
  free(pipe_buf);
}
...