【问题标题】:too few arguments to function even when arguments count are correct即使参数计数正确,参数也太少而无法运行
【发布时间】:2013-06-24 23:49:58
【问题描述】:

这是示例代码:

typedef struct
{
  char symname[DLL_MAX_SYMNAME_LEN]; // Symbol name char
  filename[DLL_MAX_FILENAME_LEN]; // File name from which the
                                  // symbol comes
  unsigned int vaddr; // Exact address of nearest symbol
} dll_sym_info_t;

extern void sbblink_write_one_frame(u8 In,u8 F,u8 Ph,u8 Sub,u8 Ch,u8 S,u8 T, u8 P);

const char * str_sbblink_write_OP_frame_channels = "sbblink_write_one_frame";
void (*fun_sbblink_write_OP_frame_channels) (u8 In,u8 Fpga,u8 InSlot,u8 SubCh,u8 Chan,u8 Size,u8 Type,u8 Print);
.
.
fun_sbblink_write_OP_frame_channels = (void (*) (u8,u8,u8,u8,u8,u8,u8,u8))sym.vaddr;
.
.
fun_sbblink_write_OP_frame_channels (0,SBBL_FLINK,PhSlotRRH,i,0,0,0,0);

但即使是错误:

error: too few arguments to function 'fun_sbblink_write_OP_frame_channels'

请帮帮我。

谢谢,

【问题讨论】:

  • 你能给我们提供sym,看起来像struct是的!
  • 还提供vaddr指向的函数声明..
  • typedef struct { char symname[DLL_MAX_SYMNAME_LEN]; // 符号名称 char 文件名[DLL_MAX_FILENAME_LEN]; // 符号来自的文件名 unsigned int vaddr; // 最近符号的确切地址 } dll_sym_info_t;
  • extern void sbblink_write_one_frame(u8 In,u8 F,u8 Ph,u8 Sub,u8 Ch,u8 S,u8 T, u8 P);
  • 当我在dll_sym_info_t 内的filename[] 声明之前添加char 标记以及为SBBL_FLINKPhSlotRRH 和@987654332 提供定义时,您的代码编译得很好@。您确定要发布您的真实代码吗?你能提供一个Short, Self Contained, Correct (Compilable), Example 来证明你的问题吗?

标签: c function pointers compiler-errors arguments


【解决方案1】:

尽量保持简单。如果“复杂”问题失败,请尝试更简单的方法,即

/* Since this doesn't work, let's try something that really should work
   fun_sbblink_write_OP_frame_channels (0,SBBL_FLINK,PhSlotRRH,i,0,0,0,0); */

sbblink_write_one_frame(1,2,3,4,5,6,7,8);

然后,如果可行,请尝试:

/* Since this doesn't work, let's try something that really should work
   fun_sbblink_write_OP_frame_channels (0,SBBL_FLINK,PhSlotRRH,i,0,0,0,0); */

/* OK, this worked, let's go one step forward
sbblink_write_one_frame(1,2,3,4,5,6,7,8); */
fun_sbblink_write_OP_frame_channels (1,2,3,4,5,6,7,8);

那就试试吧:

/* OK, this silly stuff worked, let's go all the way
sbblink_write_one_frame(1,2,3,4,5,6,7,8);
fun_sbblink_write_OP_frame_channels (1,2,3,4,5,6,7,8); */
fun_sbblink_write_OP_frame_channels (0,SBBL_FLINK,PhSlotRRH,i,0,0,0,0);

您在每次尝试中获得的错误/成功应该会帮助您解决问题。

【讨论】:

    猜你喜欢
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多