预期标识符或 '(' 在 '~' 标记之前
expected identifier or '(' before '~' token
我在处理项目时遇到问题。我知道有很多类似的问题得到了回答,但是对于这个特殊的问题,我找不到任何帮助。我收到以下错误:
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);
}
还有一件事:我遇到了关于 case 'h' 长度的问题:printf(),所以我将文本外码为多个字符。
如果您需要更多信息,请问我。
编译器在第42行报错,但你问题的源码只有33行,而且没有~
字符。您需要向我们展示您正在编译的完整源代码。
不过我猜对了。
错误消息显示一行在第 1 列中有一个 ~
字符,后面没有任何内容。 vi(或 vim)文本编辑器使用 ~
来标记屏幕上不属于文件的行。如果您从 vi 编辑器会话中复制并粘贴源文件,很容易复制太多行并在源文件末尾出现额外的 ~
。
编辑文件,跳到末尾,然后删除该行。
我明白了。我的编译器 (vim) 添加了我看不见的行。我使用了另一个编辑器,可以正确删除不需要的代码。是的,一直以来都是我的错。非常抱歉,这是漫长的一天。
我在处理项目时遇到问题。我知道有很多类似的问题得到了回答,但是对于这个特殊的问题,我找不到任何帮助。我收到以下错误:
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);
}
还有一件事:我遇到了关于 case 'h' 长度的问题:printf(),所以我将文本外码为多个字符。 如果您需要更多信息,请问我。
编译器在第42行报错,但你问题的源码只有33行,而且没有~
字符。您需要向我们展示您正在编译的完整源代码。
不过我猜对了。
错误消息显示一行在第 1 列中有一个 ~
字符,后面没有任何内容。 vi(或 vim)文本编辑器使用 ~
来标记屏幕上不属于文件的行。如果您从 vi 编辑器会话中复制并粘贴源文件,很容易复制太多行并在源文件末尾出现额外的 ~
。
编辑文件,跳到末尾,然后删除该行。
我明白了。我的编译器 (vim) 添加了我看不见的行。我使用了另一个编辑器,可以正确删除不需要的代码。是的,一直以来都是我的错。非常抱歉,这是漫长的一天。