我有這樣的結構:傳遞字符數組常量無效* PARAM
typedef struct {
float batch;
float length;
uint32_t test;
char val[0];
}
PARAM;
而且我打電話這種格式的函數:
void fillValues(float val, float len, uint32_t tmp, const void* prw);
我宣佈結構和分配一些內存:
PARAM *first = calloc(10, sizeof(PARAM));
我遇到的問題是如果我在調用函數之前打印first->data
的值N,它包含了預期,但如果我調用該函數:
fillValues (test, first->batch, first->length, first->test, &first->val);
,並嘗試打印裏面PRW,它包含什麼。
我想我傳遞的值不正確,因爲它被聲明爲char數組,但函數參數是一個const void *。 P.S.我不想改變賦值參數類型。
其中PRW在fillValues使用的僅一部分被轉換爲一個雙:
double *value
value = (double*)first->data;
*value = *(const double*)pwr;
對不起一些愚蠢的錯別字我的錯誤 – homeGrown
@homeGrown這就是爲什麼你應該複製/粘貼你的代碼在這裏,而不是重新鍵入它。 –
@Michael Walz這是一個巨大的功能,所以不想添加徒勞的代碼 – homeGrown