Ожидаемый идентификатор или '(' перед '~' токеном
Я столкнулся с проблемой при работе над проектом. Я знаю, что есть много похожих вопросов, на которые даны ответы, но в отношении этого специального вопроса я не мог найти никакой помощи. Я получаю следующую ошибку:
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, легко скопировать слишком много строк и получить дополнительную ~
в конце вашего исходного файла.
Отредактируйте файл, перейдите до конца и удалите эту строку.