我有以下的代碼調用該函數uint32_pack。這個程序在Dev-C++中編譯時沒有錯誤,但當'tag'是偶數時不會產生正確的結果。在Visual Studio中,程序編譯但產生錯誤,我猜測這些錯誤是爲什麼當'標記'是偶數時我沒有得到正確的輸出。我仍然試圖讓我的頭在指針附近,我不確定在聲明它們時出錯的位置。謝謝你的幫助。如何初始化指針正確
這裏是代碼,其中的誤差來自:
1 int uint32_pack (uint8_t *fieldnumber, uint32_t value, uint8_t *out);
2 int main(){
3 uint32_t initvalue = 2;
4 int return_rv;
5 uint8_t *tag = (uint8_t *) malloc(sizeof(uint8_t));
6 *tag = 38;
7 uint8_t *tempout= (uint8_t *) malloc(30);
8 return_rv = uint32_pack (tag, initvalue, tempout);
9 free(tempout);
10 free(tag);
11 }
而且從VS的錯誤,是如下:
error C2143: syntax error : missing ';' before 'type' (on line 7)
error C2065: 'tempout' : undeclared identifier (on line 8)
warning C4047: 'function' : 'unsigned char *' differs in levels of indirection from 'int' (on line 8)
warning C4024: 'uint32_pack' : different types for formal and actual parameter 3 (on line 8)
error C2065: 'tempout' : undeclared identifier (on line 9)
warning C4022: 'free' : pointer mismatch for actual parameter 1 (on line 9)
看起來你可能會被編譯爲C代碼,因爲MSVC不支持C99它不允許你混合使用聲明和代碼。將它編譯爲C++代碼(重命名爲.cpp或使用IIRC'/ Tp'標誌),看看是否能修復它。如果你需要uint32_pack函數的幫助,你需要在你的問題中包含它。 – user786653
看起來你是對的。你爲什麼不把它發佈爲答案? –
@negeo當你在它的時候 - 爲什麼,哦,爲什麼,你malloc單字節? –