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.
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 ?
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.
Hocam dediğinizi uyguladım. Derledi :) Çok sağolun.
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ı ?