在main()上调用时返回分段错误11的外部函数。(C++)

在main()上调用时返回分段错误11的外部函数。(C++),c++,C++,我正在尝试制作一个程序,使用库提供显示年/月/日/小时/分/秒的选项。问题是,在主菜单上输入选项后,程序会显示分段错误:11 我做错了什么 time.cpp: 方案h: main.cpp: 附言: 1.仅包含在time.cpp中 2.我使用名称空间std 时间函数所做的第一件事就是调用它自己。这最终会使堆栈溢出 也不要叫主叫,不要在返回后中断。你不能在程序中调用Maund。如上面提到的,C++中不允许自己调用。如果你需要一个循环,使用一个实际的循环。你的时间函数在做任何其他事情之前调用它自己——

我正在尝试制作一个程序,使用库提供显示年/月/日/小时/分/秒的选项。问题是,在主菜单上输入选项后,程序会显示分段错误:11

我做错了什么

time.cpp:

方案h:

main.cpp:

附言: 1.仅包含在time.cpp中 2.我使用名称空间std

时间函数所做的第一件事就是调用它自己。这最终会使堆栈溢出


也不要叫主叫,不要在返回后中断。

你不能在程序中调用Maund。如上面提到的,C++中不允许自己调用。如果你需要一个循环,使用一个实际的循环。你的时间函数在做任何其他事情之前调用它自己——它永远不会返回。和stdlib函数一样调用函数真是个坏主意。自己调用main是个坏主意。至于你的问题,你真正调用的是哪个时间函数?您自己的还是std::time函数?想想如果你的时间函数无限地调用自己会发生什么。。。
int time(int x) {

    time_t now = time(0);
    tm *ltm = localtime(&now);

    switch (x) {

        case 1: // year
            return 1900 + ltm -> tm_year;
            break;

        case 2: // month
            return 1 + ltm -> tm_mon;
            break;

        case 3: // day
            return ltm -> tm_mday;
            break;

        case 4: // hour
            return 1 + ltm -> tm_hour;
            break;

        case 5: // minutes
            return 1 + ltm -> tm_min;
            break;

        case 6: // seconds
            return 1 + ltm -> tm_sec;
            break;

        default:
            return 0;
            break;
    }
}
#pragma once

int time(int);
int main() {
    int option;

    cout << "Chose an option:\n[1] Year\n[2] Month\n[3] Day\n[4] Hour\n[5] Minutes\n[6] Seconds\n -";
    cin >> option;

    if (option > 6) {
        cout << "The options are from 1-9\n\n";
        main();
    }

    cout << time(option) << endl;
}
int time(int x) {
    time_t now = time(0);