[English follows]

Merhabalar !

Biliyorum uzun süredir yazmıyordum, en son 7'sinde yazdığıma göre 3 haftadır benden tık yok :) Neyse, bu mesajla ölmediğimi kanıtlamış olayım. Son yazımdan beri baya bir gelişme oldu. Uzun süredir yapmak istediğim Interrail seyahatini gerçekleştirdim. Bir hafta boyunca Amsterdam, Brüksel, Paris, Köln ve Hamburg'u gezdik. Çok zevk aldım, fotoğrafları bir ara buraya yollayacağım. Artık darısı gelecek yaz için planladığım Trans-Sibirya ve Çin gezisinde :) Gelmek isteyenler elime mum diksin bu arada :)

Yine uzun süredir teknik bir konuda yazı yazmamıştım, yeni yerlerin heyecanı daha baskın çıkmış, gezi ve gözlem yazıları yazmıştım. Şimdi tekniğe geri dönüyorum.

Efenim bazen bir programı derlemeye çalıştığımızda derleyici hatalarını anlamakta zorlanırız. Bu yazı o hatalardan birini aydınlatmaya yönelik olacak. Aldığımız hatamız şu:

expected declaration specifiers or ‘...’ before ‘myType’

Bu hatayı almamıza yol açan kod şöyle olabilir:

int myFunc(int arg0, myType arg1);

Burada bir fonksiyon prototipi tanımlamışız ama derleyicimizin bize kızmasına bakarak birşeylerin ters olduğunu anlıyoruz. Derleyicinin "declaration specifier" derken kastettiği şey aslında fonksiyon argümanlarının tipi. Burada derleyici myType'ın bir tip değil parametre ismi olduğunu düşünüyor (arg0 ve arg1 gibi). Bunun nedeni bu tipi bilmiyor olması. '...' derken ise beklediği tipin bir literal da olabileceğini (int, float vs.) anlatıyor. Sorunu çözmek için kullandığınız tipi nerede tanımladığınıza bakın. Eğer bir kütüphanede ise kütüphaneyi gözden geçirmeniz, doğru eklemeniz gerekiyor. Derleyiciye kullandığınız tipin nerede olduğunu gösterince sorununuz çözülecektir.

--

[English Version]

This article is about a specific compiler error. I want to shed some light on an error I had received many times before. The error is, like in the title,

expected declaration specifiers or ‘...’ before ‘myType’

This error may be resulting from a code excerpt such as:

int myFunc(int arg0, myType arg1);

Here we are declaring a function prototype. What compiler means when it says it expects a "declaration specifier" is that it doesn't know what type myType is. The compiler than assumes that myType is a parameter name (like the name in "int myName") and thinks that parameter type is missing. Thus, it expects a declaration specifier before my parameter name. The type can also be a literal (like int etc.) , I think this is what is meant by '...' from the message. If only the compilers were more understandable :) Anyway, to remove this bug and compile your code, you have to show the compiler where your type is. If you are using a library, check your library and how you include it. After that you should be fine.