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