A NesC programozási nyelv

További tudnivalók

Argumentum nélküli függvények és régi stílusú C deklarációk

Az argumentum nélküli nesC függvényeket () –vel deklaráljuk, nem pedig (void) –al. Az utóbbi fordítási idejű hibát vált ki.
A régi stílusú C deklarációk (()-el ) és függvény definíciók nem használhatók az interfészekben és a komponensekben.
Ezek a változások nem vonatkoznak a C fájlokra, azaz a már elkészített .h fájlokat változtatás nélkül használni lehet.

Attribútumok

A nesC használja a gcc __attribute__ szintaktikáját a függvények néhány tulajdonságának leírására. Ezek az attribútumok mind a függvény deklarációnál, mind a függvény definíciónál megadhatók. A függvényhez tartozó attribútumok ezeknek az összessége.
Az attribútum megadásának szintaktikája:

init-declarator-list: also init-declarator attributes init-declarator-list , init-declarator attributes function-definition: also declaration-specifiersopt declarator attributes declaration-listopt compound-statement attributes: attribute attributes attribute attribute: __attribute__ ( ( attribute-list ) ) attribute-list: single-attribute attribute-list , single-attribute single-attribute: identifier identifier ( argument-expression-list )

A nesC két attribútumot támogat: Példa:
module RealMain { ... } implementation { int main(int argc, char **argv) __attribute__((C, spontaneous)) { ... } }

Ebben a példában a main-nek nyílván a C globális hatókörben kell elhelyezkednie, hogy a linker meg tudja találni. Mivel a main –t kívülről hívják (a kódban egyáltalán nem is létezik rá hívás), ezért ez egy spontán függvény.

Fordítási idejű konstans függvények

A nesC-ben van egy új konstans kifejezés: a konstans függvény. Ezek a függvények a nyelvben vannak definiálva, és arra valók, hogy fordítási időben kiszámoljanak egy konstanst. Bár több ilyen függvény bevezetését tervezik, jelenleg csak egy van, a unique.
Deklarációja:

unsigned int unique(char * identifier)

Visszatérési értéke: ha a függvényre n db hívás érkezik ugyan azzal az identifier –el, akkor minden hívásnál egy más értéket ad vissza a 0…n-1 intervallumból. Ez a függvény nagyon hasznos paraméterezett interfészek használatakor: ha egy K komponens megvalósít egy paraméterezett interfészt, akkor ennek a függvények a segítségével azonosítani tudja a felhasználókat.