visual?studio?2022一個不易發(fā)現(xiàn)的問題
D:\Program Files(x86)\C++(從入門到放棄)\01 結(jié)構(gòu)體定義和使用\x64\Debug\01 結(jié)構(gòu)體定義和使用.exe (進(jìn)程 23260)已退出,代碼為 -1073741819。
昨天晚上學(xué)習(xí)C++的時候,學(xué)習(xí)到結(jié)構(gòu)體,跟著老師寫代碼發(fā)現(xiàn)何老師一模一樣的代碼總是編不過去。沒有打印信息,總是報錯。
源代碼如下:
#include <iostream> #include <string> #include <ctime> using namespace std; struct student { ?? ?string name; ?? ?int score; }; struct teacher { ?? ?string name; ?? ?struct student sArray[5]; }; void allocateSpace(struct teacher tarray[], int len) { ?? ?string nameSeed = "ABCDE";; ?? ?for (int i = 0; i < len; i++) ?? ?{ ?? ??? ?tarray[i].name = "teacher_"; ?? ??? ?tarray[i].name += nameSeed[i]; ?? ??? ?for (int j = 0; j < 5; j++) ?? ??? ?{ ?? ??? ??? ?tarray[i].sArray[j].name = "Student_"; ?? ??? ??? ?tarray[i].sArray[j].name += nameSeed[j]; ?? ??? ??? ?tarray[i].sArray[j].score = 60; ?? ??? ?} ?? ?} } void printinfo(struct teacher tarray[], int len) { ?? ?for (int i = 0; i < len; i++) ?? ?{ ?? ??? ?cout << "老師姓名:" << tarray[i].name << endl; ?? ??? ?for (int j = 0; j < 5; j++) ?? ??? ?{ ?? ??? ??? ?cout << "\t學(xué)生姓名: " << tarray[i].sArray[j].name << ?? ??? ??? ??? ?" 考試分?jǐn)?shù): " << tarray[i].sArray[j].score ?? ??? ??? ??? ?<<endl; ?? ??? ?} ?? ?} } int main() { ?? ?struct teacher tarray[3]; ?? ?int len = sizeof(tarray) / sizeof(tarray[0]); ?? ?srand((unsigned int)time(NULL)); ?? ?allocateSpace(tarray, len); ?? ?printinfo(tarray, len); ?? ?return 0; }
仔細(xì)研究發(fā)現(xiàn)在同一個項目中的另一個源文件中有一個同名結(jié)構(gòu)體,但是數(shù)據(jù)屬性不一樣。
目標(biāo)文件為07,代碼上面已經(jīng)附了。此處和07源文件中的teacher熟據(jù)屬性不一致。導(dǎo)致執(zhí)行報錯。
這個未知的錯誤,完全查看不出來。也無從調(diào)試。
找出問題的過程:
我把整個源碼放到code::blocks中進(jìn)行編譯成功運行。后來把該項目中的源文件按個“右鍵-屬性-從生成中排除- 是”排除之后單個編譯通過,挨個添加到04時編譯不過,添加左右的除了04文件其他均通過。由此判斷是為04問題。但是04中的main函數(shù)我改為main04,也無法編譯。仔細(xì)查看04代碼發(fā)現(xiàn)有一個結(jié)構(gòu)體
struct teacher {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E--> int id; string name; int age; struct student stu; };
和07中結(jié)構(gòu)體
struct teacher {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E--> string name; struct student sArray[5]; };
名字一模一樣,單數(shù)數(shù)據(jù)屬性不一樣。修改04中的teacher為Teacher之后編譯通過。
結(jié)論:
visual studio 2022在同一個項目中可以有同名結(jié)構(gòu)體,但是數(shù)據(jù)屬性必須要一致,否則會報錯誤(該錯誤很難找且很詭異)。
到此這篇關(guān)于visual studio 2022一個不易發(fā)現(xiàn)的問題的文章就介紹到這了,更多相關(guān)visual studio 2022一個不易發(fā)現(xiàn)的問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
牛頓迭代法求多項式在1.5附近的值2*x的3次冪--4x平方+3*x-6=0的實現(xiàn)代碼
以下代碼是使用了牛頓迭代法求多項式在1.5附近的值 2*x的3次冪 - 4x的平方 + 3*x -6=0的實例。需要的朋友參考下吧2013-05-05Qt(C++)調(diào)用工業(yè)相機(jī)Basler的SDK使用示例
這篇文章主要介紹了Qt(C++)調(diào)用工業(yè)相機(jī)Basler的SDK使用示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03C語言使用函數(shù)實現(xiàn)字符串部分復(fù)制問題
這篇文章主要介紹了C語言使用函數(shù)實現(xiàn)字符串部分復(fù)制問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11