Create an associative array with function pointers as the value
    rempas 
    rempas at tutanota.com
       
    Wed Apr 20 10:42:59 UTC 2022
    
    
  
I'm trying to create an associative array where the keys will be 
a "string" type and the values will be function pointers. I'm 
using a custom type is called "file_struct" and for anyone that 
wants to try specifically with this type, the definition is the 
following:
```d
struct file_struct {
   FILE* file;
   const char* name;
   size_t ln, cn, size;
   str identifier, type_buffer, type_buffer_tmp;
   void inc_ln() {
     this.cn = 0;
     this.ln++;
   }
}
```
The function pointers will point to a function that doesn't 
return anything and takes only one parameter that is of my custom 
"file_struct" type. More specifically, the signature is the 
following:
```d
void function(ref file_struct)
```
So with that been said, I tried to create an associative array 
with the following code:
```d
// Suppose that the function exists in another file
void parse_let(ref file_struct file) {}
immutable void function(ref file_struct)[string] 
common_identifiers = [
   "let"     : &parse_let,
   // "macro"   : &parse_macro,
];
```
When I try to compile it (I can only compile with "ldc2" because 
my code contains gcc-style inline assembly), I get the following 
error message:
```
main.d(12,71): Error: expression `["let":& parse_let]` is not a 
constant
```
Of course the file name and the number of line is relative to me 
case. Any ideas?
    
    
More information about the Digitalmars-d-learn
mailing list