c extern undefined reference [yinelenen]
Basit bir hata olduğundan emin olduğum şey için özür dilerim. Ama birkaç saat sonra neyi yanlış yaptığımı anlayamıyorum. Bunun externbir işlevin dışında bildirilmesi ve bir işlev içinde tanımlanması gerektiğini anlıyorum . Ama işe yarayamıyorum.
İşte minimum kod hatam.
extern double d;
int main(void) {
d = 0;
return 0;
}
/home/0KzRYK/ccCTD3Lf.o: In function `main': prog.c:(.text.startup+0x3): undefined reference to `d' collect2: error: ld returned 1 exit status
Yanıtlar
Yorumlarınız için hepinize teşekkür ederim. Benim hatam, extern double ddeğişkeni ile aynı şekilde tanımladığını varsaymaktı double d. Ama görünüşe göre öyle değil.
Bunun dilin sezgisel olmayan bir özelliği olduğunu söyleyebilirim, en azından yeni başlayanlar için (örneğin extern doublebir tanım değil ama static doubleöyledir).
Yorumlarınızı takiben, tam olarak bundan bahseden ilgili bir soru buldum: Neden bir tanım değil de 'extern' kullanarak bir değişken yaratmak?
Anlayışınız yanlış. externBir fonksiyon içinde tanımlanmasına gerek olmayan değişkenler . Ancak bir yerde tanımlanması gerekir (belki başka bir kaynak dosyası).
Misal:
main.c:
extern double d;
int main(void) {
d = 0;
return 0;
}
d.c:
double d;
derleme:
gcc -o main main.c d.c