"main"通常是一个非静态函数ERROR [英] ‘main’ is normally a non-static function ERROR
本文介绍了"main"通常是一个非静态函数ERROR的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
显示两个错误: main.c:80:警告:"main"通常是非静态功能 main.c:88:错误:输入结尾处的预期声明或语句 而且我似乎找不到问题...大括号的数目相等...似乎是什么问题?
There are two errors that show up: main.c:80: warning: ‘main’ is normally a non-static function main.c:88: error: expected declaration or statement at end of input and I cant't seem to find the problem... There number of curly braces is equal... What seems to be the problem?
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <getopt.h>
#include <string.h>
#include "main-getopt.h"
void print_usage_and_abort( const char *message )
{
if( NULL != message )
fprintf( stderr, "Error: %s\n", message );
fprintf( stderr, "Usage: partitioner -n <nodes> [ -f <basename> ]\n\n" );
exit( -1 );
}
void parsing (int argc, char **argv, struct Params *params)
{
char error_message[256];
params->nodes = 0;
memcpy( params->filename_base, "output", strlen("output") + 1 );
int opt;
size_t len;
int numarg;
while ((opt = getopt(argc, argv, "n:f:")) != -1) {
int i;
for (i = 1; i < argc; i++)
{
if (argv[i][0] == '-')
{
if (i+1 == argc || argv[i+1][0] == '-')
{
sprintf( error_message, "No Filename");
print_usage_and_abort( error_message );
}
if (argv[i][1] == 'n')
{
numarg = atoi( optarg );
if( numarg < 1 || numarg > 2048 )
{
sprintf( error_message, "Number of nodes agrument expects a "
"number between 1 and 2048, actual %s", optarg );
print_usage_and_abort( error_message );
}
}
else if (argv[i][1] == 'f')
len = strlen( optarg );
// limit to buffer capacity
if( len >= MAX_FILENAME_BASE )
{
sprintf( error_message, "Base filename parameter length is "
"expected to be less than %d but is %d",
(int)MAX_FILENAME_BASE, (int)len );
print_usage_and_abort( error_message );
}
else if(len<MAX_FILENAME_BASE)
{
memcpy( params->filename_base, optarg, len + 1 );
break;
}
else
{
sprintf( error_message, "Unknown command switch %c", (char)optopt );
print_usage_and_abort( error_message );
break;
}
}
}
if( 0==params->nodes )
{
sprintf( error_message, "Number of nodes switch -n is required" );
print_usage_and_abort( error_message );
}
}
int main(int argc, char *argv[])
{
struct Params params;
parse_arguments( argc, argv, ¶ms );
fprintf( stdout, "Parameters are:\n\tNumber of nodes:\t%d\n\t"
"Filename base:\t%s\n\n", params.nodes, params.filename_base );
return 0;
}
推荐答案
我已经为您编辑了缩进.您现在看到在parsing
函数中的某个地方错过了一个右括号吗?
I've edited indentation for you. Do you see now that somewhere in parsing
function you've missed one closing bracket?
这篇关于"main"通常是一个非静态函数ERROR的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文