首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中出现“错误:'x‘的大小未知或为零”的原因?

在C++中出现“错误:'x‘的大小未知或为零”的原因?
EN

Stack Overflow用户
提问于 2009-07-05 18:23:11
回答 3查看 3.5K关注 0票数 2

我是编程的初学者。不幸的是,我在c++中有一个项目,我不知道它的问题。这个程序有点长:

代码语言:javascript
复制
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>
#include <time.h>
#include <math.h>
#include "vdsim.h"
void gen01dat( long, int);
void cnv_encd(int g[], long,int,int);
int main()
{
long data_len=10;
int *out_array;
long input_len=5;
int g[2][3];

    void gen01dat(data_len,*out_array);

    int in_array=*out_array;
  void cnv_encd(g,input_len,in_array,*out_array);
  cout<<"the out_array 2 is :\t"<<*out_array<<endl;


  void gen01dat( long data_len, int *out_array ) {

     long t;            /* time */

     /* re-seed the random number generator */
     randomize();

     /* generate the random data and write it to the output array */
     for (t = 0; t < data_len; t++)
          *( out_array + t ) = (int)( rand() / (RAND_MAX / 2) > 0.5 );

}

void cnv_encd(int g[2][k],long input_len, int *in_array,int *out_array)
{

     int m;                     /* K - 1 */
     long t, tt;                /* bit time, symbol time */
     int j, k;                  /* loop variables */
     int *unencoded_data;       /* pointer to data array */
     int shift_reg[K];          /* the encoder shift register */
     int sr_head;               /* index to the first elt in the sr */
     int p, q;                  /* the upper and lower xor gate outputs */

     m = K - 1;

     /* read in the data and store it in the array */
     for (t = 0; t < input_len; t++)
          *(unencoded_data + t) = *(in_array + t);

     /* zero-pad the end of the data */
     for (t = 0; t < m; t++) {
          *(unencoded_data + input_len + t) = 0;
     }

     /* Initialize the shift register */
     for (j = 0; j < K; j++) {
          shift_reg[j] = 0;
     }

     sr_head = 0;

     /* initialize the channel symbol output index */
     tt = 0;

     for (t = 0; t < input_len + m; t++) {
          shift_reg[sr_head] = *( unencoded_data + t );
          p = 0;
          q = 0;
          for (j = 0; j < K; j++) {
                k = (j + sr_head) % K;
                p ^= shift_reg[k] & g[0][j];
                q ^= shift_reg[k] & g[1][j];
          }

          /* write the upper and lower xor gate outputs as channel symbols */
          *(out_array + tt) = p;
          tt = tt + 1;
          *(out_array + tt) = q;
          tt = tt + 1;


          sr_head -= 1;    /* equivalent to shifting everything right one place */
          if (sr_head < 0) /* but make sure we adjust pointer modulo K */
                sr_head = m;

     }

     /* free the dynamically allocated array */
     free(unencoded_data);

}

    return 0;
}

编译器会给出这个错误:

代码语言:javascript
复制
error: size of 'gen01'is unknown or zero in function main()
error: size of 'cnv_encd'is unknown or zero in function main()

我不知道这个错误是什么意思?谢谢你的帮忙

EN

回答 3

Stack Overflow用户

发布于 2009-07-05 18:30:26

您不能在C++中嵌套函数,因此请尝试将cnv_encd()gen01dat()的定义移出main()

此外,您错误地调用了这些函数:

代码语言:javascript
复制
void gen01dat(data_len,*out_array);

应该是

代码语言:javascript
复制
gen01dat(data_len,out_array);

并且在使用out_array之前不要对其进行初始化(这不是编译错误,但它会使您的程序崩溃)。

您对cnv_encd()的调用也同样是错误的。另外,您可以声明cnv_encd()在不同的位置接受不同的参数:将main()之前的声明与您稍后给出的定义进行比较。

票数 13
EN

Stack Overflow用户

发布于 2009-07-05 18:30:41

您正在尝试调用main中的gen01dat和cnv_encd函数。但是,您的调用语法是错误的。

gen01dat(data_len,*out_array);

应该就是这样

gen01dat(data_len,*out_array);

其他函数调用也是如此。

查看您的代码,即使在修复这些代码之后,您也会遇到其他警告或错误。但既然您正在学习,我将让您自己弄清楚它们。

更新:我没有看到main中的嵌套函数。这也是错误的。不过,我怀疑丢失的右大括号是一个打字错误。

票数 3
EN

Stack Overflow用户

发布于 2009-07-05 18:33:35

"void“关键字仅在声明函数时使用。它告诉编译器这个函数不返回任何值。

因此,只有在声明函数和实现函数时才使用它。当你调用它们的时候,你只需要使用它的名字和参数。就像阿迪亚·塞格尔指出的那样。

你需要改变你的声明。它们必须包含参数变量名,而不仅仅是变量的类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1084573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档