??????1???????????飩
??????VC??VS???д???????????????????????exe??????????????????????????
????????????????.cpp(.c)???????.h????????obj?????
??????????????????????е?obj???????LINK????????.exe?????
???????????????????????????????
?????????????????????????????????
??????????????????????????????????????
?????????????????????????obj?????
???????obj???????????????
???????.cpp(.c)?????????.h?????????????????????
??????????????????????????obj??????????????洢??????????
??????2??????????
??????????????????????????и????????????????????????????????????????
????????????????????????????????????????????
????????????????????????????????????????????κ???????????????????????????????????????????????????????????????????????????????
???????????????????????Σ??????????????Ρ?
??????3?? extern????
?????????????????"C"????????????extern "C" void fun(int a?? int b);??????????????fun????????????C??????????????????????????C++???
???????????????????"C"????????α???????????????????У?extern int g_nNum;??????????????????????????????÷?Χ??????????????????????????????????????????????????á?
??????B??????????A??????ж?????????????????B???????????A??????????????????????Σ?B??????????????ú??????????????????????????????????A????????????????????????????
??????4????????(extern)
?????????????????ù????????????????Щ????????????????????磬res.h??res.cpp????????????????????????ProducerThread??ConsumerThread?????????????????????QT???????
????/**********res.h??????????************/
????#pragma once
????#include <QSemaphore>
????const int g_nDataSize = 1000; // ????????????????????
????const int g_nBufferSize = 500; // ???λ????????С
????extern char g_szBuffer[]; // ???λ?????
????extern QSemaphore g_qsemFreeBytes; // ??????λ???????????????????????????????????????????????????????????
????extern QSemaphore g_qsemUsedBytes; // ??????λ??????е???????????????????????????????????ж????????
????/**************************/
??????????????g_nDataSize??g_nBufferSize??????????????????????
????/**********res.cpp??????????************/
????#pragma once
????#include "res.h"
????// ??????????
????char g_szBuffer[g_nBufferSize];
????QSemaphore g_qsemFreeBytes(g_nBufferSize);
????QSemaphore g_qsemUsedBytes;
????/**************************/