1

-f を使用すると、エラー セグメンテーション違反が発生します。何かアイデアはありますか? -f オプションは、入力ファイルを選択するためのものです。

  struct list_names filenames;
  list_names_init(&filenames, "filenames");

  optind = 1;
  while ((ch = getopt(argc, argv, ":hvf:")) != -1)  //where getopt defined
    {
      switch (ch) {
        case 'h':
                printf("usage: ./hake [-h] [-v] [-f file]\n-h           print help\n-v           verbose mode; enable extra printing; can be repeated\n");
                printf("-f file      input filename; default is hakefile or Hakefile");
          break;
        case 'v':
          verbose = 1;
          break;
        case 'f':
          f_flag++;
          list_names_append_from_file(&filenames, optarg);
       printf("Read_file%s\n",optarg);
       read_file(optarg);
          break;
4

1 に答える 1

4

がどのように定義されているかを知らなければlist_names_append_from_file、質問に答えるのは困難です。ただし、セグメンテーション違反は、ほぼ確実に間違った型または数のパラメーターを関数に渡しているか、ポインターを台無しにしていることを意味します。-Wall -Werror を使用して (gcc を使用していると仮定して) 再コンパイルすることをお勧めします。

于 2012-02-25T03:27:31.303 に答える