为什么我的代码中出现"嵌套函数被禁用..."错误?

r0a*_*ach 0 c function

基本上,一个程序找到一个数字最大素数因子.不知道逻辑是否正确因为我无法运行它来测试它.我知道这很长.但请原谅我.

//largest_prime.c
#include <stdio.h>
int main() {
    int num,large;
    int prime(int);
    int lprime(int);
    printf("Enter number: "); 
    scanf("%d",&num);
    large = lprime(num);
    printf("Largest Prime = %d\n",large);
    return 0;
}

int lprime(int num) {
    int i=num-1,large;
    while (i!=-1) {
        if (num%i==0) {
            if (prime(i)==1) {
                large=i;
                i=-1;
            }
            i--;
        }
        return large;
    }

    int prime(int num) {
        int prime,i=num-1;
        while (i!=-1) {
            if(num%i==0) {
                if(i!=1) {
                    i=-1;
                    return 0;
                }
                else
                    return 1;
            }
            i--;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我使用GCC在终端(我使用Mac)输出此信息:

largest_prime.c: In function ‘lprime’:
largest_prime.c:26: error: nested functions are disabled, use -fnested-functions to re-enable
largest_prime.c:39: error: syntax error at end of input
Run Code Online (Sandbox Code Playgroud)

我尝试了-fnested-functions来重新启用.我明白了:

largest_prime.c: In function ‘lprime’:
largest_prime.c:39: error: syntax error at end of input
Run Code Online (Sandbox Code Playgroud)

请帮忙!

Dra*_*sha 10

lprime缺少尾随'}'(实际上我相信你在尾随'}'时丢失了)


Alo*_*lon 6

你错过了一个}之后 return large;

编译器推断出你正在开始一个新的函数声明, lprime 因此嵌套函数错误