Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么我们不能在主函数中定义函数?_C - Fatal编程技术网

C 为什么我们不能在主函数中定义函数?

C 为什么我们不能在主函数中定义函数?,c,C,在下面的程序中,我尝试调用函数n和内部n,尝试调用主函数中定义的m函数,但在编译时,我得到以下错误: 为什么我会出错?请解释一下 代码如下: #include <stdio.h> void m(); void n() { m(); } void main() { n(); void m() { printf("hi"); } } 在标准C中,不能在另一个函数的范围内实现函数。请将m的实现移出主函数 你发布的代码根本不应该编译

在下面的程序中,我尝试调用函数n和内部n,尝试调用主函数中定义的m函数,但在编译时,我得到以下错误:

为什么我会出错?请解释一下

代码如下:

#include <stdio.h>
void m();
void n()
{
    m();
}

void main()
{
    n();
    void m()
    {
        printf("hi");
    }
}

在标准C中,不能在另一个函数的范围内实现函数。请将m的实现移出主函数

你发布的代码根本不应该编译;但是,您得到的错误是因为链接器ld找不到m的实现。可以使用该函数,因为您声明了它,但缺少实现,因此无法链接

还请注意,main函数将返回int类型的值。使用void将使程序返回任意值,操作系统/shell无法从该值判断执行是否成功

#include <stdio.h>

void m();

void n() {
    m();
}

int main() {
    n();
    return 0;
}

void m() {
    printf("hi");
}

在标准C中,不能在另一个函数的范围内实现函数。请将m的实现移出主函数

你发布的代码根本不应该编译;但是,您得到的错误是因为链接器ld找不到m的实现。可以使用该函数,因为您声明了它,但缺少实现,因此无法链接

还请注意,main函数将返回int类型的值。使用void将使程序返回任意值,操作系统/shell无法从该值判断执行是否成功

#include <stdio.h>

void m();

void n() {
    m();
}

int main() {
    n();
    return 0;
}

void m() {
    printf("hi");
}

将m的函数声明移到main方法之外。

将m的函数声明移到main方法之外。

m在main方法之内定义。在标准C中,这是不允许的,您不能在另一个函数中定义函数

某些编译器(如gcc)允许将其作为扩展。但是这个函数是局部的,也就是说,m只存在于main内部,从外部看不到。类似地,函数中定义的变量是该函数的局部变量,不能从外部看到

你的空虚;顶部的声明声明声明存在一个名为m的全局函数,但它不存在。这就是为什么会出现链接器错误。

m是在main中定义的。在标准C中,这是不允许的,您不能在另一个函数中定义函数

某些编译器(如gcc)允许将其作为扩展。但是这个函数是局部的,也就是说,m只存在于main内部,从外部看不到。类似地,函数中定义的变量是该函数的局部变量,不能从外部看到


你的空虚;顶部的声明声明声明存在一个名为m的全局函数,但它不存在。这就是为什么会出现链接器错误。

m在主函数中。把它移到外面去!我知道,但我为什么会出错?我知道-显然不是。这段代码甚至不应该编译,更不用说在链接时失败了,这就是错误。void main是错误的。main应该返回int.m,它在main函数中。把它移到外面去!我知道,但我为什么会出错?我知道-显然不是。这段代码甚至不应该编译,更不用说在链接时失败了,这就是错误。void main是错误的。main应该返回int。