Dotaz C

Pavel Troller patrol na sinus.cz
Neděle Leden 7 13:39:04 CET 2018


Zdravím,
  při neděli malý blbý dotaz... Zase jednou typická C vlastnost typu
"ať je tam hvězdička nebo není, dělá to totéž :-)".

Mějme tento example:

#include <stdio.h>
#include <string.h>

int main(void) {
        char str[80];
        snprintf(str,80,"%s","Nazdar ahoj\n");
        printf("%s",str);
        return 0;
}

Vše jasné, funguje jak má.

A nyní změníme řádek s deklarací str na:
	char *str[80];

Kompilátor sice warninguje o nesprávném typu 1. parametru pro snprintf,
že to má být char * a je to char **, ale zkompiluje to, binár je stejně
velký a stejně funkční :-). Nicméně disassembly kódu ukazuje, že je to
zkompilované mírně odlišně.
  Ptám se proto, že tu cosi kompiluji (není to můj produkt), hlásí mi
to ten warning, tak jsem to začal zkoumat, mají tam tu druhou možnost
s hvězdičkou, tak uvažuji, proč ji tam mají a zda to mám přepsat na tu
první, jak bych to udělal já :-).

Zdraví Pavel



Další informace o konferenci Hw-list