Ich konvertiere einen Code von einer C-Version, die Inline-Variablendeklaration und die Verwendung von Mathe in Struct type Variableninitialisierungen zu einer Version ermöglicht, die beide nicht erlaubt und ich brauche sie gleich zu arbeiten. Der Code, den ich glaube, ich klarstellen müssen, ist dies:ansi c Strukturinitialisierung von c99
// definitions
typedef struct poly poly_t;
struct poly
{
size_t d; /* degree */
byte c[512]; /* coefficients */
};
// usage in the middle of the method
// (contains non-declaring code before)
poly_t tmp = { 1, {1, gf_exp[i]} };
und ich bin Umwandlung dies als:
poly_t tmp; // at the beginning of function scope
// then at the same spot of previous declaration
tmp.d = 1;
tmp.c[0] = 1;
tmp.c[1] = gf_exp[i];
Ist dies der richtige Weg, um diese Struktur zu initialisieren?
Ich brauche beide von ihnen initialisieren die gleichen Werte in der Variablen.
"mit Mathematik in Strukturtyp Variable Initialisierungen" - das in jedem erlaubt ist Version des C-Standards. Aber Sie verwenden eine Variable als Initialisierer, was in keiner Version erlaubt ist. – Olaf
Wenn der erste zu einem Compiler-Fehler führte, könnte das mit etwas anderem zusammenhängen. Ist die Variable beispielsweise im Dateibereich deklariert oder nicht? – Lundin
Abgesehen von der Tatsache, dass der vorherige Code gültig ist, funktioniert Ihre Neuschreibung nicht wie vorheriger Code. poly_t tmp = {1, {1, gf_exp [i]}}; initialisiert auch verbleibende Mitglieder von c auf Null. – rAndom69