Думайте о #define
макросах как о чем-то, что ищется и заменяется.Если вы замените макросы их определениями, вы получите:
typedef struct fileList{
"/data/file1";
"/data/file2";
"/data/file3";
}fileList;
и
printf("Hello world! %s\n", fl."/data/file1");
Эти фрагменты явно не синтаксически действительны.
Похоже,Вы пытаетесь создать структуру с тремя строковыми полями.Один из способов сделать это может быть:
typedef struct fileList {
const char *file1;
const char *file2;
const char *file3;
} fileList;
Затем, если вы хотите создать экземпляр этой структуры и установить значения этих строковых полей в строковые литералы, которые вы перечислили, вымог написать:
int main() {
fileList fl;
fl.file1 = "/data/file1";
fl.file2 = "/data/file2";
fl.file3 = "/data/file3";
printf("Hello world! %s\n", fl.file1);
}
Нет необходимости в макросах препроцессора.