VS2022のC++のコンパイルエラーに関する質問です。 Q1)下記のA,B,Cの各エラーを生成し、正しいコードを お教え頂けますと大変有難いです。 ==================

C言語関連41閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

0

ThanksImg質問者からのお礼コメント

毎度お世話になります。 丁寧な回答有難う御座いました。

お礼日時:5/22 14:59

その他の回答(3件)

0

(nqf********さん) 既に解答が付いてるのでそれ以外のことを >C++のコンパイルエラーに関する質問です。 このコードはC++言語ではなくC言語です、区別しましょう C言語なのでファイルの拡張子は *.cpp ではなく *.c です。

0

c++のバージョンにも依りそうだけど…。 #include <stdio.h>  /* printf, scanf, NULL */ #include <stdlib.h> /* calloc, exit, free */ #include <string.h> /* memset */ #define LEN 32 int main(void) {     int len = LEN;     const int lev = 4, f = 2;     double x[LEN];     double sq2 = 1.41421356 / 2;     double g[f] = {sq2, -sq2};     double h[f] = {sq2, sq2};     for (int i = 0; i < len; i++) x[i] = i;     double* y = (double*)calloc(len, sizeof(double));     double* t = (double*)calloc(len, sizeof(double));     memcpy(t, x, len * sizeof(double));  // copy x to tmp     for (int i = 0; i < lev; i++) {      // level counter i         memset(y, 0, len * sizeof(double));         int len2 = len / 2;         for (int j = 0; j < len2; j++)             for (int k = 0; k < f; k++) {                 y[j] += t[2 * j + k] * h[k];                 y[j + len2] += t[2 * j + k] * g[k];             }         len = len2;         memcpy(t, y, len * sizeof(double));  // copy approximation to t     }     for (int i = 0; i < 32; i++) printf("%d %f %f\n", i, x[i], y[i]);     free(y);     free(t); }

0

~改善例~ A. C2131 式は定数に評価されませんでした int len = 32; double x[len]; //<--A たとえばこれを逆にします。 double x[32]; int len = _countof(x); B. E0144 型 "void *" の値を使用して型 "double *" のエンティティを初期化することはできません C. C2440 '初期化中': 'void *' から 'double *' に変換できません。 calloc の前に (double*) を書くことで対処できます。