次の例を参照してください。
$ cat foo.h
#define ENUM enum
#define COMMA ,
ENUM foo_t
{
FOO_VALUE1=11 COMMA
FOO_VALUE2=22 COMMA
FOO_VALUE3=33
};
C ファイルで使用するには:
$ cat foo.c
#include <stdio.h>
#include "foo.h"
#define print_enum(x) printf("%s=%d\n", #x, x)
int main()
{
enum foo_t foo = FOO_VALUE1;
print_enum(FOO_VALUE1);
print_enum(FOO_VALUE2);
print_enum(FOO_VALUE3);
return 0;
}
シェル スクリプトで使用するには:
$ cat foo.sh
#!/bin/bash
shopt -s expand_aliases
alias ENUM='true'
alias COMMA=
source foo.h
enum_names=( ${!FOO_*} )
for name in ${enum_names[@]}; do
echo $name=${!name}
done
テストしてみましょう:
$ gcc foo.c
$ ./a.out
FOO_VALUE1=11
FOO_VALUE2=22
FOO_VALUE3=33
$ bash foo.sh
FOO_VALUE1=11
FOO_VALUE2=22
FOO_VALUE3=33
$