Я включил все файлы в кодовых блоках при создании простого приложения для приложения Cole, но эта ошибка возникает, когда я определяю макрос. Я предполагаю, что линкер не может связать все файлы в проекте. i есть два файла, включенных в проект test1.c и test1.h в файлах, как показано ниже.Ошибка при построении проекта в кодовых блоках
file ::::: test1.c
#include<stdio.h>
void m();
#include "test1.h"
#define DS==1
int main(){
return 0;
}
файл :::: test1.h
#ifndef TEST1_H_INCLUDED
#define TEST1_H_INCLUDED
#if DS ==1
void m(){
printf("hello DS==1");
}
#eliif DS==2
void main(){
printf("hello DS==2");
}
#endif
#endif // TEST1_H_INCLUDED
Ошибка в том, что
**> E: \ Documents \ MyProjects \ My C PROJ \ Te \ test1.c || В function 'main': |
E:\Documents\Myprojects\My C PRoj\Te\test1.c|8|warning: implicit declaration of function 'm'| obj\Debug\test1.o||In function `main':| E:\Documents\Myprojects\My C PRoj\Te\test1.c|8|undefined reference to `m'| ||=== Build finished: 1 errors, 1 warnings ===|**
если я удалить условный макрос компиляции просто с помощью следующего кода:
файл ::::: test1.c
#include<stdio.h>
#include "test1.h"
int main(){
m();
return 0;
}
файл ::::: test1.h
#ifndef TEST1_H_INCLUDED
#define TEST1_H_INCLUDED
void m(){
printf("uncoditional macro");
}
#endif // TEST1_H_INCLUDED
все прекрасно работает. Какая причина для этого?
Что делать * вы * думаете? – Elazar
Что вы не понимаете? – nouney
Возможный дубликат [Может ли кто-нибудь объяснить эти неопределенные поведения (i = i ++ + ++ i, i = i ++ и т. Д.)] (Http://stackoverflow.com/questions/949433/could-anyone-explain-these -undefined-behaviors-iiiii-etc) –