Ожидаемый идентификатор или '(' перед '~' токеном

Я столкнулся с проблемой при работе над проектом. Я знаю, что есть много похожих вопросов, на которые даны ответы, но в отношении этого специального вопроса я не мог найти никакой помощи. Я получаю следующую ошибку:

Compiling main.c
main.c:42:1: error: expected identifier or '(' before '~' token
~
^
Makefile:47: recipe for target 'obj/main.o' failed
make: *** [obj/main.o] Error 1

РЕДАКТИРОВАТЬ: я удалил последние строки кода, но ошибка по-прежнему происходит в строке после последней '}'.

Проект о алгоритме PageRank, используя опции в консоли для выбора того, какой алгоритм желательно использовать. Я пытаюсь прочитать или использовать параметры в командной строке, но ошибка не дает мне даже взглянуть на семантику моей программы.

/*
* main.c
*
*Programmierung 2 - Projekt 2 (PageRank)
*/
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>

#include "utils.h" //is existing in the Directory


int main (int argc, char *const *argv) {
    //initialize the random number generator
    rand_init();

    printf("You gave %d command line arguments%c\n", argc-1, argc==1 ? '.' : ':');
    int graph;
    int i = 1;
    char * h = "-h show this help. \n";
    char * p = "...";
    char * m = "...";
    char * r = "...";
    char * s = "...";
    while ((graph = getopt(argc, argv, "hmprs")) != -1) {

        switch (graph) {
            default : printf("make -h | -m | -p | -r | -s "); break;
            case 'h' : printf("%s %s %s %s %s"), h, m, p, r, s); break;
            //this-like outcommended code like the one above
            //and again 
            //and once more
            //and a final one
        }
    printf(" - %s\n", argv[i]);
    i++;
    }
exit(0);
}

Еще одна вещь: я столкнулся с проблемой, касающейся длины случая 'h': printf(), поэтому я закодировал текст несколькими символами. Если вам нужна дополнительная информация о чем-либо, спросите меня.

2 ответа

Решение

Я понял. Мой компилятор (vim) добавил строки из моего поля зрения. Я использовал другой редактор и мог удалить ненужный код должным образом. Да, все это было плохо. Мне очень жаль, это был долгий день.

Компилятор сообщает об ошибке в строке 42, но источник в вашем вопросе только 33 строки, и он не содержит ~ персонаж. Вам нужно показать нам весь исходный код, который вы собираете.

Но у меня есть хорошее предположение.

Сообщение об ошибке показывает строку с ~ символ в столбце 1 и ничего после него. Текстовый редактор vi (или vim) использует ~ отмечать строки на экране, которые не являются частью файла. Если вы копируете и вставляете исходный файл из сеанса редактора vi, легко скопировать слишком много строк и получить дополнительную ~ в конце вашего исходного файла.

Отредактируйте файл, перейдите до конца и удалите эту строку.

Другие вопросы по тегам