Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Garip bir struct hatası

Başlatan ArifAhmet, 15 Aralık 2014, 20:50:52

ArifAhmet

Merhabalar,
Elimde böyle bir yapı var;

typedef struct {
     /**
      * Value representing the argument
      */
     char 			val[SHELL_MAX_ARG_LEN];
} shell_cmd_arg;

/**
 * All arguments from a single command line
 */
typedef struct {
     /**
      * Number of arguments
      */
     unsigned char	count;

     /**
      * The arguments
      */
     shell_cmd_arg	args[SHELL_MAX_ARGS];
} shell_cmd_args;

/**
 * Definition of a single shell command
 */
typedef struct {
     /**
      * Name of the command
      */
     const char 	*cmd;

     /**
      * Description of the command
      */
     const char		*desc;

     /**
      * Functino called when executing the commmand
      */
     int (*func)(shell_cmd_args *args);
} shell_cmd;

/**
 * All shell commands knwon by the shell
 */
typedef struct {
     /**
      * Number of commands
      */
     unsigned char		count;

     /**
      * The commands
      */
     shell_cmd			cmds[];
} shell_cmds;


ve böyle bir atama yapıyorum;

shell_cmd cmd[]={"h","list available commands",shell_cmd_help};

shell_cmds komutlar = {2,cmd};


fakat ikinci satırdaki cmd'ye çok fazla değer var diyor. Sorunu bulamadım bir türlü, yardımcı olaiblirseniz sevinirim.

İyi çalışmalar.
Yaşasın Open Source!

Burak B

shell_cmd	 cmds[];


Derleyici bu kadar akıllı mı sence ? Bu hafızayı kim yönetecek ? Flexible array tanımlıyorsun !

shell_cmd	*cmds;


Dersek nasıl olur mesela ?
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

AsHeS

#2
Structın içinde ki shell_cmd    cmds[]; şekliyle GCC derliyor ama near initialize warningi veriyor.
Keil'in bir ayarı falan olabilir bu şekilde tanımlayabilmek için.

ArifAhmet

Hocam dediğinizi uyguladım. Derledi :) Çok sağolun.
Yaşasın Open Source!

Burak B

Alıntı yapılan: Burak BAYRAK - 16 Aralık 2014, 00:59:56
shell_cmd	 cmds[];


Derleyici bu kadar akıllı mı sence ? Bu hafızayı kim yönetecek ? Flexible array tanımlıyorsun !

shell_cmd	*cmds;


Dersek nasıl olur mesela ?

Tekrar etmeye gerek var mı ?
"... a healthy dose of paranoia leads to better systems." Jack Ganssle