visual?studio?2022一個(gè)不易發(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++的時(shí)候,學(xué)習(xí)到結(jié)構(gòu)體,跟著老師寫代碼發(fā)現(xiàn)何老師一模一樣的代碼總是編不過去。沒有打印信息,總是報(bào)錯(cuò)。
源代碼如下:
#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)在同一個(gè)項(xiàng)目中的另一個(gè)源文件中有一個(gè)同名結(jié)構(gòu)體,但是數(shù)據(jù)屬性不一樣。

目標(biāo)文件為07,代碼上面已經(jīng)附了。此處和07源文件中的teacher熟據(jù)屬性不一致。導(dǎo)致執(zhí)行報(bào)錯(cuò)。

這個(gè)未知的錯(cuò)誤,完全查看不出來。也無從調(diào)試。
找出問題的過程:
我把整個(gè)源碼放到code::blocks中進(jìn)行編譯成功運(yùn)行。后來把該項(xiàng)目中的源文件按個(gè)“右鍵-屬性-從生成中排除- 是”排除之后單個(gè)編譯通過,挨個(gè)添加到04時(shí)編譯不過,添加左右的除了04文件其他均通過。由此判斷是為04問題。但是04中的main函數(shù)我改為main04,也無法編譯。仔細(xì)查看04代碼發(fā)現(xiàn)有一個(gè)結(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在同一個(gè)項(xiàng)目中可以有同名結(jié)構(gòu)體,但是數(shù)據(jù)屬性必須要一致,否則會(huì)報(bào)錯(cuò)誤(該錯(cuò)誤很難找且很詭異)。
到此這篇關(guān)于visual studio 2022一個(gè)不易發(fā)現(xiàn)的問題的文章就介紹到這了,更多相關(guān)visual studio 2022一個(gè)不易發(fā)現(xiàn)的問題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Visual Studio 2022 的安裝和創(chuàng)建C++項(xiàng)目(圖文教程)
- 使用Visual?Studio?2022開發(fā)前端的詳細(xì)教程
- Visual?Studio?2022下載及配置OpenCV4.5.5的詳細(xì)過程
- Visual?Studio?2022下載安裝與使用超詳細(xì)教程
- Visual Studio 2022最新版安裝教程(圖文詳解)
- Visual?Studio?2022智能輔助編碼介紹
- Visual?Studio?2022?激活碼(親測(cè)可用)
- Visual Studio 2022 Preview 使用 C++20 Module的詳細(xì)過程
相關(guān)文章
C++ 操作系統(tǒng)內(nèi)存分配算法的實(shí)現(xiàn)詳解
本文主要介紹了在動(dòng)態(tài)分區(qū)管理方式下采用不同的分配算法實(shí)現(xiàn)主存分配和實(shí)現(xiàn)主存回收,旨在幫助學(xué)生理解在動(dòng)態(tài)分區(qū)管理方式下應(yīng)怎樣實(shí)現(xiàn)主存空間的分配和回收。感興趣的可以了解一下2021-11-11
C語言中十六進(jìn)制轉(zhuǎn)十進(jìn)制兩種實(shí)現(xiàn)方法
這篇文章主要介紹了C語言中十六進(jìn)制轉(zhuǎn)十進(jìn)制兩種實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下2017-01-01
C語言中求字符串長(zhǎng)度的函數(shù)的幾種實(shí)現(xiàn)方法
這篇文章主要介紹了C語言中求字符串長(zhǎng)度的函數(shù)的幾種實(shí)現(xiàn)方法,需要的朋友可以參考下2018-08-08
C++循環(huán)鏈表之約瑟夫環(huán)的實(shí)現(xiàn)方法
這篇文章主要介紹了C++循環(huán)鏈表之約瑟夫環(huán)的實(shí)現(xiàn)方法,對(duì)于學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法有一定的借鑒價(jià)值,需要的朋友可以參考下2014-09-09
海量數(shù)據(jù)處理系列之:用C++實(shí)現(xiàn)Bitmap算法
本篇文章是對(duì)用C++實(shí)現(xiàn)Bitmap算法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C語言實(shí)現(xiàn)電影院選座管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)電影院選座管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
C語言實(shí)現(xiàn)簡(jiǎn)單的掃雷游戲操作
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡(jiǎn)單的掃雷游戲操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03
OpenCV實(shí)現(xiàn)車牌字符分割(C++)
這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)車牌字符分割,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11

