У меня есть следующий код, который вызывает функцию 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)