Skip to main content
IBM Quantum Platform

Steuerungsfluss

Die Qiskit-C-API für den Kontrollfluss bietet Funktionen zur Überprüfung der in Quantenschaltungen verwendeten Kontrollflussanweisungen. Sie können den Typ einer Kontrollflussanweisung abfragen, auf verschachtelte Schaltkreise zugreifen, Bedingungen und Schleifenparameter überprüfen sowie die Zuordnungen von Qubits und klassischen Bits zwischen verschachtelten Blöcken und dem obersten Schaltkreis abrufen.

typedef struct QkControlFlowInstruction QkControlFlowInstruction

Die „opaque QkControlFlowInstruction struct“ ist das wichtigste Element, das von der C-API verwendet wird, um Kontrollflussanweisungen innerhalb einer Schaltung darzustellen und zu analysieren. Es wird durch einen Aufruf von erhalten und qk_circuit_get_control_flow_instruction() muss durch einen Aufruf von freigegeben werden qk_control_flow_instruction_free(). Die meisten C-API-Funktionen, die auf Kontrollflusskonstrukte zugreifen, erwarten einen Zeiger auf diese undurchsichtige Struktur, wodurch diese zum zentralen Mittel für die Überprüfung von Kontrollflussanweisungen aus C wird. Beachten Sie, dass die meisten Funktionen dieser API, die QkControlFlowInstruction als Eingabe verwenden, ausgeliehene Zeiger zurückgeben, die so lange gültig bleiben, wie die Kontrollflussanweisung existiert; daher müssen diese Zeiger nicht separat freigegeben werden.


Datentypen

QkControlFlowKind

enum QkControlFlowKind

Diese Enumeration stellt die verschiedenen Arten von Kontrollflussanweisungen dar, die in einem Quantenschaltkreis vorkommen können.

Werte:

Zähler QkControlFlowKind_Box

Anleitung für „A Box“

Zähler QkControlFlowKind_BreakLoop

Befehl „Break-Schleife“

Zähler QkControlFlowKind_ContinueLoop

Anweisung „Schleife fortsetzen“

Zähler QkControlFlowKind_ForLoop

For-Schleifenanweisung

Zähler QkControlFlowKind_IfElse

If-else-Anweisung

Zähler QkControlFlowKind_Switch

Switch-Case-Anweisung

Zähler QkControlFlowKind_While

While-Schleifen-Anweisung

QkConditionType

enum QkConditionType

Stellt die Art der Bedingung oder des Switch-Ziels in einer Anweisung zur Ablaufsteuerung dar.

Diese Enumeration dient dazu, anzugeben, ob eine Bedingung (in „ IfElse “- oder „While“-Anweisungen) oder ein „Switch“-Ziel (in „Switch“-Anweisungen) auf ein klassisches Bit, ein klassisches Register oder einen klassischen Ausdruck angewendet wird.

Werte:

Zähler QkConditionType_ClBit

Bedingung auf der Grundlage eines klassischen Bits

Zähler QkConditionType_ClReg

Bedingung auf der Grundlage eines klassischen Registers

Zähler QkConditionType_Expr

Bedingung auf der Grundlage eines klassischen Ausdrucks

QkConditionBitInfo

struct QkConditionBitInfo

Informationen zu einer klassischen Bitbedingung.

Diese Struktur enthält die Details einer Bedingung, die auf ein einzelnes klassisches Bit angewendet wird

uint32_t clbit

Der Index des klassischen Bits in der Schaltung

bool Bedingung

Der Erwartungswert des klassischen Bits (wahr oder falsch)

QkBoxDurationKind

enum QkBoxDurationKind

Bezeichnet die Art der Dauerangabe für eine „Box“-Anweisung.

Anweisungen in einem Feld können keine Dauer, einen konkreten Dauerwert oder eine als klassischer Ausdruck angegebene Dauer haben.

Werte:

Zähler QkBoxDurationKind_NoDuration

Keine Dauer angegeben

Zähler QkBoxDurationKind_Duration

Konkreter Dauerwert (dargestellt als QkDurationInfo)

Zähler QkBoxDurationKind_Expr

Dauer, angegeben als klassischer Ausdruck

QkSwitchCaseLabels

struct QkSwitchCaseLabels

Enthält die Bezeichnungen für einen Switch-Fall.

Diese Struktur enthält ein Array mit Label-Werten, mit denen ein „Switch“-Case abgeglichen wird. Ein Fall wie case(1, 2, 3) hätte beispielsweise drei Bezeichnungen: 1, 2 und 3. qk_control_flow_switch_case_labels_clearDer Speicher für das Array „labels“ wird mit qk_control_flow_switch_case_labels_uint zugewiesen und muss mit freigegeben werden.

const uint64_t *labels

Zeiger auf ein Array von Beschriftungswerten

size_t num_labels

Anzahl der Bezeichnungen im Array

QkLoopParamKind

enum QkLoopParamKind

Der Typ des Schleifenparameters in einer „ ForLoop “-Steueranweisung.

Diese Enumeration gibt an, ob eine for-Schleife keinen Schleifenparameter hat, ein Parametersymbol verwendet oder eine Variable (QkVar) zur Verfolgung des Iterationswerts nutzt.

Werte:

Zähler QkLoopParamKind_NoLoopParam

Für die Anweisung „ ForLoop “ wurde kein Schleifenparameter angegeben

Zähler QkLoopParamKind_Parameter

Der Schleifenparameter ist ein Parameter

Zähler QkLoopParamKind_Variable

Der Schleifenparameter ist eine Variable

QkSymbolType

enum QkSymbolType

Der Symboltyp im Kontext von „ ForLoop “.

Diese Enumeration gibt an, ob es sich bei einem Symbol um eine eigenständige Variable oder um ein Element innerhalb eines Parametervektors handelt, auf das über einen Index zugegriffen wird.

Werte:

Zähler QkSymbolType_Standalone

Ein eigenständiges Symbol mit einem einfachen Namen

Zähler QkSymbolType_Element

Ein Elementsymbol mit einem Basisnamen und einem Index

QkSymbolInfo

struct QkSymbolInfo

Symbolinformationen, einschließlich Typ und Daten.

Diese Struktur repräsentiert ein Symbol im Kontext von „ ForLoop “, das entweder eine eigenständige Variable oder ein indiziertes Element sein kann.

QkSymbolType ty

Die Art des Symbols (eigenständiges Symbol oder Element)

char *name

Eine mit einem Null-Zeichen abgeschlossene C-Zeichenkette, die den Symbolnamen enthält. Bei eigenständigen Symbolen ist dies der Variablenname. Bei Elementsymbolen handelt es sich hierbei um den Basisnamen des Parametervektors. Der Aufrufer ist dafür verantwortlich, diese Zeichenkette mithilfe von qk_str_free. freizugeben.

size_t index

Bei Elementsymbolen ist dies der Index im Parametervektor. Bei eigenständigen Symbolen wird dieses Feld nicht verwendet und sollte ignoriert werden.

QkLoopCollectionType

enum QkLoopCollectionType

Der Typ der Sammlung, der in einer „ ForLoop “-Steuerungsanweisung verwendet wird.

Werte:

Zähler QkLoopCollectionType_List

Die Schleife durchläuft eine explizit angegebene Liste von Elementen

Zähler QkLoopCollectionType_Range

Die Schleife durchläuft einen Bereich im Stil von „ Python “ (Start, Ende, Schritt)

QkLoopElements

struct QkLoopElements

Eine Struktur, die Schleifenelemente aus einer „ ForLoop “-Steueranweisung enthält.

Diese Struktur wird von qk_control_flow_loop_elements zurückgegeben und enthält sowohl einen Zeiger auf das Array der Schleifenelemente als auch die Anzahl der Elemente im Array. Der Zeiger wird ausgeliehen und darf vom Aufrufer nicht freigegeben werden.

const ptrdiff_t *elements

Zeiger auf das Array der Schleifenelemente.

size_t len

Anzahl der Elemente im Array.


Funktionen

qk_control_flow_kind

QkControlFlowKind qk_control_flow_kind(const QkControlFlowInstruction *cf_inst)

Rufe eine Anweisung zur Steuerung des Programmablaufs ab.

Beispiel

// Assuming cf_inst is obtained from a circuit with control flow
QkControlFlowKind kind = qk_control_flow_kind(cf_inst);
switch (kind) {
case QkControlFlowKind_Box:
    // do something with the box instruction
    break;
case QkControlFlowKind_BreakLoop:
    // do something with the break loop instruction
    break;
case QkControlFlowKind_ContinueLoop:
    // do something with the continue loop instruction
    break;
case QkControlFlowKind_ForLoop:
    // do something with the for loop instruction
    break;
case QkControlFlowKind_IfElse:
    // do something with the if-else instruction
    break;
case QkControlFlowKind_Switch:
    // do something with the switch instruction
    break;
case QkControlFlowKind_While:
    // do something with the while loop instruction
    break;
}

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf die Kontrollflussanweisung.

Rückgabe

Die Art der Anweisung zur Steuerung des Programmablaufs.

qk_control_flow_num_blocks

size_t qk_control_flow_num_blocks(const QkControlFlowInstruction *cf_inst)

Ermittelt die Anzahl der Schaltkreise in einer Anweisung zur Ablaufsteuerung.

Beispiel

// Assuming cf_inst is obtained from a circuit with control flow
size_t num_blocks = qk_control_flow_num_blocks(cf_inst);
for (size_t i = 0; i < num_blocks; i++) {
    const QkCircuit *block_circuit = qk_control_flow_block_circuit(cf_inst, i);
    // Process each block...
}

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf die Kontrollflussanweisung.

Rückgabe

Die Anzahl der in dieser Ablaufsteuerungsanweisung enthaltenen Schaltkreise.

qk_control_flow_block_circuit

const QkCircuit *qk_control_flow_block_circuit(const QkControlFlowInstruction *cf_inst, size_t block_idx)

Erhalte einen Zeiger auf einen Schaltkreisblock innerhalb einer Anweisung zur Kontrollflusssteuerung.

Ablaufsteuerungsanweisungen enthalten einen oder mehrere Schaltkreise (z. B. besteht „ IfElse “ aus zwei Blöcken, während „Switch“ mehrere Blöcke haben kann). Diese Funktion ruft einen bestimmten Block anhand seines Indexes ab.

Beispiel

// Assuming cf_inst is an IfElse control flow instruction
const QkCircuit *true_block = qk_control_flow_block_circuit(cf_inst, 0);
const QkCircuit *false_block = qk_control_flow_block_circuit(cf_inst, 1);
// Process the true and false blocks...

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf die Kontrollflussanweisung.
  • block_idx – Der Index des abzurufenden Blocks. block_idx muss innerhalb der Grenzen liegen (< qk_control_flow_num_blocks).

Rückgabe

Ein Zeiger auf den QkCircuit Block, der den angeforderten Block darstellt. Die Schaltung ist so lange gültig, wie die Anweisung zur Steuerungsabfolge vorhanden ist. Der Kreislauf gehört zur Kontrollflussanweisung und darf vom Aufrufer nicht freigegeben werden.

qk_control_flow_qubit_map

const uint32_t *qk_control_flow_qubit_map(const QkControlFlowInstruction *cf_inst)

Rufe die Qubit-Zuordnung für einen Befehl zur Steuerungsabfolge ab.

Gibt einen Zeiger auf ein Array zurück, das die in den Blöcken der Kontrollflussanweisung verwendeten Qubits ihren Indizes in der Schaltung der obersten Ebene zuordnet. Die Länge des Arrays entspricht der Anzahl der von der Steuerflussanweisung verwendeten Qubits. Für jeden Qubit-Index i im verschachtelten Block liefert die Zuordnung am Index i im Array den entsprechenden Qubit-Index in der Schaltung der obersten Ebene.

Beispiel

// Assuming cf_inst is obtained from a circuit with control flow
const uint32_t *qubit_map = qk_control_flow_qubit_map(cf_inst);
uint32_t num_qubits = qk_circuit_num_qubits(qk_control_flow_block_circuit(cf_inst, 0));
for (uint32_t i = 0; i < num_qubits; i++) {
    printf("Block qubit %u maps to circuit qubit %u\n", i, qubit_map[i]);
}

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf die Kontrollflussanweisung.

Rückgabe

Ein Zeiger auf ein Array von uint32_t Werten, die die Qubit-Zuordnung darstellen. Das Array ist so lange gültig, wie die Anweisung zur Steuerung des Programmablaufs existiert. Das Array gehört zur Ablaufsteuerungsanweisung und darf vom Aufrufer nicht freigegeben werden.

qk_control_flow_clbit_map

const uint32_t *qk_control_flow_clbit_map(const QkControlFlowInstruction *cf_inst)

Rufen Sie die klassische Bit-Zuordnung für einen Kontrollflussbefehl ab.

Gibt einen Zeiger auf ein Array zurück, das die klassischen Bits, die in den Blöcken der Kontrollflussanweisung verwendet werden, ihren Indizes in der obersten Schaltungsebene zuordnet. Die Länge des Arrays entspricht der Anzahl der klassischen Bits, die von der Kontrollflussanweisung verwendet werden. Für jeden klassischen Bit-Index i im verschachtelten Block liefert die Zuordnung am Index i im Array den entsprechenden klassischen Bit-Index in der Schaltung der obersten Ebene.

Beispiel

// Assuming cf_inst is obtained from a circuit with control flow
const uint32_t *clbit_map = qk_control_flow_clbit_map(cf_inst);
uint32_t num_clbits = qk_circuit_num_clbits(qk_control_flow_block_circuit(cf_inst, 0));
for (uint32_t i = 0; i < num_clbits; i++) {
    printf("Block clbit %u maps to circuit clbit %u\n", i, clbit_map[i]);
}

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf die Kontrollflussanweisung.

Rückgabe

Ein Zeiger auf ein Array von uint32_t Werten, die die klassische Bit-Zuordnung darstellen. Das Array ist so lange gültig, wie die Anweisung zur Steuerung des Programmablaufs existiert. Das Array gehört zur Ablaufsteuerungsanweisung und darf vom Aufrufer nicht freigegeben werden.

qk_control_flow_condition_type

QkConditionType qk_control_flow_condition_type(const QkControlFlowInstruction *cf_inst)

Die Bedingungsart einer Ablaufanweisung abrufen.

Gibt den Typ der Bedingung zurück, die in einer „ IfElse “- oder „While“-Anweisung verwendet wird. Die Bedingungsart gibt an, ob die Bedingung auf einem klassischen Bit, einem klassischen Register oder einem klassischen Ausdruck basiert.

Es kommt zu einem Fehler, wenn cf_inst keine „ IfElse “- oder „While“-Steueranweisung ist.

Beispiel

// Assuming cf_inst is an IfElse or While control flow instruction
QkConditionType cond_type = qk_control_flow_condition_type(cf_inst);
switch (cond_type) {
case QkConditionType_ClBit:
    // do something with classical bit...
    break;
case QkConditionType_ClReg:
    // do something with classical register...
    break;
case QkConditionType_Expr:
    // Process expression...
    break;
}

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein gültiger Zeiger auf ein QkControlFlowInstruction Element, das eine Anweisung vom Typ „ IfElse “ oder „While“ darstellen muss.

Rückgabe

Ein QkConditionType Enum-Wert, der den Konditionstyp angibt.

qk_control_flow_condition_bit_info

QkConditionBitInfo qk_control_flow_condition_bit_info(const QkControlFlowInstruction *cf_inst)

Rufe die Informationen zum Status der klassischen Bits einer Befehlsausführungsanweisung ab.

Extrahiert den klassischen Bit-Index und den Erwartungswert aus einer „ IfElse “- oder „While“-Anweisung, die eine klassische Bit-Bedingung enthält.

Es kommt zu einem Fehler, wenn cf_inst keine „ IfElse “- oder „While“-Anweisung ist oder wenn die Bedingung kein Bit-Typ ist.

Beispiel

// Assuming cf_inst is an IfElse or While instruction with a bit condition
QkConditionBitInfo bit_info = qk_control_flow_condition_bit_info(cf_inst);
printf("Condition: clbit[%u] == %s\n", bit_info.clbit, bit_info.condition ? "true" : "false");

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein gültiger Zeiger auf ein QkControlFlowInstruction Element, das eine „ IfElse “- oder „While“-Anweisung mit einer klassischen Bitbedingung darstellen muss.

Rückgabe

Eine QkConditionBitInfo Struktur, die den klassischen Bit-Index und den Erwartungswert enthält.

qk_control_flow_condition_reg_cond_bit_width

uint64_t qk_control_flow_condition_reg_cond_bit_width(const QkControlFlowInstruction *cf_inst)

Ermittle die Bitbreite der klassischen Registerbedingung für einen Kontrollflussbefehl.

Ermittelt die Bitbreite des klassischen Registers aus einem „ IfElse “- oder „While“-Befehl, der eine Bedingung für ein klassisches Register enthält.

Es kommt zu einem Fehler, wenn cf_inst keine „ IfElse “- oder „While“-Steueranweisung ist oder wenn die Bedingung kein Registertyp ist.

Beispiel

// Assuming cf_inst is an IfElse or While instruction with a register condition
uint64_t bit_width = qk_control_flow_condition_reg_cond_bit_width(cf_inst);
printf("Register bit width: %lu\n", bit_width);

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein gültiger Zeiger auf ein QkControlFlowInstruction Element, das eine „ IfElse “- oder „While“-Anweisung mit einer klassischen Registerbedingung darstellen muss.

Rückgabe

Die Bitbreite der Bedingung über das klassische Register.

qk_control_flow_condition_reg

const QkClassicalRegister *qk_control_flow_condition_reg(const QkControlFlowInstruction *cf_inst)

Rufen Sie das klassische Register für die Bedingung einer Kontrollflussanweisung ab.

Extrahiert das klassische Register aus einer „ IfElse “- oder „While“-Anweisung, die eine Bedingung für das klassische Register enthält.

Es kommt zu einem Fehler, wenn cf_inst keine „ IfElse “- oder „While“-Steueranweisung ist oder wenn die Bedingung kein Registertyp ist.

Beispiel

// Assuming cf_inst is an IfElse or While instruction with a register condition
const QkClassicalRegister* creg = qk_control_flow_condition_reg(cf_inst);
// Use the classical register pointer

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein gültiger Zeiger auf ein QkControlFlowInstruction Element, das eine „ IfElse “- oder „While“-Anweisung mit einer klassischen Registerbedingung darstellen muss.

Rückgabe

Ein ausgeliehener Zeiger auf das QkClassicalRegister. Der Zeiger bleibt gültig, solange die übergeordnete Schaltung gültig bleibt.

qk_control_flow_condition_reg_cond_uint

uint64_t qk_control_flow_condition_reg_cond_uint(const QkControlFlowInstruction *cf_inst)

Ruft den Wert der klassischen Registerbedingung für eine Kontrollflussanweisung ab.

Extrahiert die Bedingung als vorzeichenlosen Ganzzahlwert aus einer „ IfElse “- oder „While“-Anweisung, die eine klassische Registerbedingung enthält.

uint64_tEs kommt zu einem Fehler, wenn cf_inst keine „ IfElse “- oder „While“-Anweisung ist, wenn die Bedingung kein Registertyp ist oder wenn der Wert der Bedingung nicht in ein passt.

Beispiel

// Assuming cf_inst is an IfElse or While instruction with a register condition
uint64_t expected_value = qk_control_flow_condition_reg_cond_uint(cf_inst);
printf("Expected register value: %lu\n", expected_value);

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein gültiger Zeiger auf ein QkControlFlowInstruction Element, das eine „ IfElse “- oder „While“-Anweisung mit einer klassischen Registerbedingung darstellen muss.

Rückgabe

Der Bedingungswert.

qk_control_flow_condition_expr

const QkExprNode *qk_control_flow_condition_expr(const QkControlFlowInstruction *cf_inst)

Ermitteln Sie die klassische Formulierung für eine Anweisung zur Ablaufsteuerung.

Extrahiert den klassischen Ausdruck aus einer „ IfElse “- oder „While“-Anweisung, die eine ausdrucksbasierte Bedingung enthält.

Es kommt zu einem Fehler, wenn cf_inst keine „ IfElse “- oder „While“-Anweisung ist oder wenn die Bedingung kein Ausdruckstyp ist.

Beispiel für die Verwendung

// Assuming while_inst is a While control flow instruction with an expression condition
QkConditionType cond_type = qk_control_flow_condition_type(while_inst);
if (cond_type == QkConditionType_Expr) {
    const QkExprNode *expr = qk_control_flow_condition_expr(while_inst);
    // Use the expression...
}

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein gültiger Zeiger auf ein QkControlFlowInstruction Element, das eine „ IfElse “- oder „While“-Anweisung mit einer Ausdrucksbedingung darstellen muss.

Rückgabe

Ein ausgeliehener Zeiger auf das QkExprNode , das den klassischen Ausdruck darstellt. Der Zeiger bleibt gültig, solange die übergeordnete Schaltung gültig bleibt.

qk_control_flow_box_duration_kind

QkBoxDurationKind qk_control_flow_box_duration_kind(const QkControlFlowInstruction *cf_inst)

Ermitteln Sie die Dauer einer Ablaufanweisung vom Typ „Box“.

Anweisungen in einem Block können keine Dauer haben, einen konkreten Dauerwert wie QkDurationInfo oder eine als Ausdruck angegebene Dauer. Diese Funktion gibt zurück, um welche Art von Dauer es sich handelt.

Es kommt zu einem Fehler, wenn cf_inst keine „Box“-Steueranweisung ist.

Beispiel

// Assuming cf_inst is a Box control flow instruction
QkBoxDurationKind duration_kind = qk_control_flow_box_duration_kind(cf_inst);
switch (duration_kind) {
case QkBoxDurationKind_NoDuration:
    // do something...
    break;
case QkBoxDurationKind_Duration:
    // do something...
    break;
case QkBoxDurationKind_Expr:
    // do something...
    break;
}

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf die Kontrollflussanweisung. Die Anweisung zur Ablaufsteuerung muss vom Typ „Box“ sein.

Rückgabe

Die Art der Dauer als QkBoxDurationKind.

qk_control_flow_box_duration_val_info

QkDurationInfo qk_control_flow_box_duration_val_info(const QkControlFlowInstruction *cf_inst)

Rufen Sie die Informationen zur Dauer einer Ablaufanweisung des Box-Steuerelements ab.

Diese Funktion ruft den Dauerwert und den Typ einer „Box“-Anweisung ab, die eine konkrete Dauer hat.

Es kommt zu einer Panik, wenn cf_inst keine „Box“-Steuerflussanweisung mit einer konkreten Dauer ist.

Beispiel

// Assuming cf_inst is a Box instruction with a concrete duration
 QkDurationInfo duration_info = qk_control_flow_box_duration_val_info(cf_inst);
 if (duration_info.ty == QkDurationType_Dt) {
     int64_t dt = duration_info.value.dt;
 } else {
     double time = duration_info.value.time;
 }

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf die Kontrollflussanweisung. Die Ablaufsteuerungsanweisung muss vom Typ „Box“ sein und eine konkrete Dauer haben.

Rückgabe

Eine QkDurationInfo Struktur, die den Dauerwert und die Einheit enthält.

qk_control_flow_box_duration_expr

const QkExprNode *qk_control_flow_box_duration_expr(const QkControlFlowInstruction *cf_inst)

Rufe den Dauerausdruck einer Ablaufanweisung des Box-Steuerelements ab.

Diese Funktion gibt einen Zeiger auf den Ausdruck zurück, der die Dauer für eine Box-Anweisung definiert, wenn die Dauer als Ausdruck angegeben wird.

Es kommt zu einer Panik, wenn cf_inst keine „Box“-Steuerflussanweisung mit einer Ausdrucksdauer ist.

Beispiel

// Assuming cf_inst is a Box instruction with an expression duration
const QkExpr *duration_expr = qk_control_flow_box_duration_expr(cf_inst);
// Use the expression to evaluate or analyze the duration...

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf die Kontrollflussanweisung. Die Kontrollflussanweisung muss vom Typ „Box“ sein und eine Ausdrucksdauer aufweisen.

Rückgabe

Ein Zeiger auf den QkExpr Ausdruck, der die Dauer angibt. Der Ausdruck ist gültig, solange die Anweisung zur Steuerung des Programmablaufs vorhanden ist. Der Ausdruck gehört zur Ablaufsteuerungsanweisung und darf vom Aufrufer nicht freigegeben werden.

qk_control_flow_loop_collection_type

QkLoopCollectionType qk_control_flow_loop_collection_type(const QkControlFlowInstruction *cf_inst)

Ruft den Typ der Sammlung ab, die in einer „ ForLoop “-Steueranweisung verwendet wird.

Diese Funktion ermittelt, ob eine ForLoop eine explizite Liste von Elementen oder einen Bereich im Stil von Python durchläuft.

Es kommt zu einem Fehler, wenn cf_inst keine „ ForLoop “-Steuerungsanweisung ist.

Beispiel

// Assuming cf_inst is a ForLoop instruction
QkLoopCollectionType collection_type = qk_control_flow_loop_collection_type(cf_inst);
if (collection_type == QkLoopCollectionType_List) {
    // Handle list-based loop
} else if (collection_type == QkLoopCollectionType_Range) {
    // Handle range-based loop
}

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf eine Kontrollflussanweisung, bei der es sich um eine „ ForLoop “ handeln muss.

Rückgabe

Ein CLoopCollectionType Enum-Wert, der den Sammlungstyp angibt.

qk_control_flow_loop_elements

QkLoopElements qk_control_flow_loop_elements(const QkControlFlowInstruction *cf_inst)

Rufe die Liste der Elemente ab, über die ein „ ForLoop “ durchläuft.

Diese Funktion ruft die Liste der Elemente aus einer „ ForLoop “-Ablaufanweisung ab, die eine explizite Listen-Sammlung verwendet. Verwenden qk_control_flow_loop_collection_type Sie, um den Sammlungstyp zu ermitteln, bevor Sie diese Funktion aufrufen.

Es wird ein Fehler ausgelöst, wenn cf_inst keine „ ForLoop “-Steuerungsanweisung mit einer Listen-Sammlung ist.

Beispiel

// Assuming cf_inst is a ForLoop instruction with a List collection type
QkLoopElements loop_elements = qk_control_flow_loop_elements(cf_inst);
for (size_t i = 0; i < loop_elements.len; i++) {
    printf("Element %zu: %zu\n", i, loop_elements.elements[i]);
}

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf eine Kontrollflussanweisung, bei der es sich um eine „ ForLoop “ mit einer „List“-Sammlung handeln muss.

Rückgabe

Eine QkLoopElements Struktur, die einen Zeiger auf das Array der Schleifenelemente und die Anzahl der Elemente enthält. Der Zeiger wird für die Dauer der Kontrollflussanweisung ausgeliehen und darf vom Aufrufer nicht freigegeben werden.

qk_control_flow_loop_range

void qk_control_flow_loop_range(const QkControlFlowInstruction *cf_inst, int64_t *out_start, int64_t *out_stop, int64_t *out_step)

Ruft die Bereichsparameter eines „ ForLoop “ ab, der einen Bereich im Stil von „ Python “ durchläuft.

Diese Funktion ruft die Start-, Stopp- und Schrittwerte aus einer „ ForLoop “-Steuerungsanweisung ab, die eine Bereichssammlung verwendet. Verwenden qk_control_flow_loop_collection_type Sie, um den Sammlungstyp zu ermitteln, bevor Sie diese Funktion aufrufen.

Es wird ein Fehler ausgelöst, wenn cf_inst keine „ ForLoop “-Steuerungsanweisung mit einer Bereichssammlung ist.

Beispiel

// Assuming cf_inst is a ForLoop instruction with a Range collection type
int64_t start, stop, step;
qk_control_flow_loop_range(cf_inst, &start, &stop, &step);
printf("Loop range: start=%ld, stop=%ld, step=%ld\n", start, stop, step);

Sicherheit

out_stop``out_start``QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist oder wenn oder out_step keine ausgerichteten, gültigen Zeiger sind, auf die geschrieben werden kann.

Parameter

  • cf_inst – Ein Zeiger auf eine Kontrollflussanweisung, bei der es sich um eine „ ForLoop “ mit einer „Range“-Sammlung handeln muss.
  • out_start – Ein Ausgabeparameter, der auf den Startwert des Bereichs gesetzt wird.
  • out_stop – Ein Ausgabeparameter, der auf den Bereichsendwert gesetzt wird.
  • out_step – Ein Ausgabeparameter, der auf den Schrittwert des Bereichs gesetzt wird.

qk_control_flow_loop_param_kind

QkLoopParamKind qk_control_flow_loop_param_kind(const QkControlFlowInstruction *cf_inst)

Ermittelt den Typ des Schleifenparameters, der in einer „ ForLoop “-Steueranweisung verwendet wird.

Diese Funktion ermittelt, ob ein „ ForLoop “ keinen Schleifenparameter hat, ein Parametersymbol verwendet oder eine Variable (QkVar) zur Verfolgung des Iterationswerts nutzt.

Es kommt zu einem Fehler, wenn cf_inst keine „ ForLoop “-Steuerungsanweisung ist.

Beispiel

// Assuming cf_inst is a ForLoop instruction
QkLoopParamKind param_kind = qk_control_flow_loop_param_kind(cf_inst);
if (param_kind == QkLoopParamKind_Parameter) {
    // Loop uses a Parameter symbol
} else if (param_kind == QkLoopParamKind_Variable) {
    // Loop uses a Variable
}

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf eine Kontrollflussanweisung, bei der es sich um eine „ ForLoop “ handeln muss.

Rückgabe

Ein QkLoopParamKind Enum-Wert, der die Art des Schleifenparameters angibt.

qk_control_flow_loop_symbol_info

QkSymbolInfo qk_control_flow_loop_symbol_info(const QkControlFlowInstruction *cf_inst)

Rufe die Informationen zum Schleifenparameter-Symbol aus einer „ ForLoop “-Steuerungsanweisung ab.

Diese Funktion ruft die Symbolinformationen des Schleifenparameters aus einer „ ForLoop “-Anweisung ab, die einen Parameter als Schleifenparameter verwendet. Der Rückgabewert QkSymbolInfo enthält den Typ, den Namen und den Index des Symbols (bei Symbolen, die Elemente eines Parametervektors sind).

Es tritt ein Fehler auf, wenn cf_inst keine „ ForLoop “-Steuerungsanweisung mit einem „loop“-Parameter ist.

Beispiel

// Assuming cf_inst is a ForLoop control flow instruction with a Parameter loop parameter
QkSymbolInfo symbol_info = qk_control_flow_loop_symbol_info(cf_inst);
if (symbol_info.ty == QkSymbolType_Standalone) {
    printf("Loop parameter: %s\n", symbol_info.name);
} else if (symbol_info.ty == QkSymbolType_Element) {
    printf("Loop parameter: %s[%zu]\n", symbol_info.name, symbol_info.index);
}
qk_str_free(symbol_info.name);

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein gültiger Zeiger auf ein QkControlFlowInstruction Objekt, das eine „ ForLoop “ mit einem „loop“-Parameter darstellen muss.

Rückgabe

Eine QkSymbolInfo Struktur, die die Symbolinformationen enthält. Der Aufrufer muss die zurückgegebene Zeichenkette im name Feld mithilfe qk_str_freevon freigeben.

qk_control_flow_loop_variable

const QkVar *qk_control_flow_loop_variable(const QkControlFlowInstruction *cf_inst)

Rufe die Schleifenvariable aus einer „ ForLoop “-Anweisung zur Steuerung des Programmablaufs ab.

Diese Funktion gibt einen Zeiger auf die Variable (QkVar) zurück, die als Schleifenparameter in einer Anweisung vom Typ „ ForLoop “ verwendet wird. Der zurückgegebene Zeiger wird für die Dauer der Ausführungsanweisung ausgeliehen und darf vom Aufrufer nicht freigegeben werden.

Es kommt zu einem Fehler, wenn cf_inst keine „ ForLoop “-Steuerungsanweisung mit einem variablen Schleifenparameter ist.

Beispiel

// Assuming cf_inst is a ForLoop control flow instruction with a Variable loop parameter
const QkVar *loop_var = qk_control_flow_loop_variable(cf_inst);
// Use the loop variable pointer to access variable information

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein gültiger Zeiger auf ein QkControlFlowInstruction Objekt, das eine „ ForLoop “ mit einem variablen Schleifenparameter darstellen muss.

Rückgabe

Ein Zeiger auf die QkVar , die die Schleifenvariable darstellt. Der Zeiger ist für die gesamte Laufzeit der Kontrollflussanweisung gültig.

qk_control_flow_switch_target_type

QkConditionType qk_control_flow_switch_target_type(const QkControlFlowInstruction *cf_inst)

Ruft den Typ des Switch-Ziels für eine Switch-Steuerungsanweisung ab.

Switch-Anweisungen können auf verschiedene Arten von Zielen angewendet werden: ein klassisches Bit, ein klassisches Register oder ein Ausdruck. Diese Funktion gibt zurück, welche Art von Ziel die Switch-Anweisung verwendet.

Es kommt zu einem Fehler, wenn cf_inst keine „Switch“-Anweisung zur Steuerung des Programmablaufs ist.

Beispiel

// Assuming cf_inst is a Switch control flow instruction
QkConditionType target_type = qk_control_flow_switch_target_type(cf_inst);
switch (target_type) {
case QkConditionType_ClBit:
    // do something
    break;
case QkConditionType_ClReg:
    // do something
    break;
case QkConditionType_Expr:
    // do something
    break;
}

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf die Kontrollflussanweisung. Die Anweisung zur Steuerung des Programmablaufs muss vom Typ „Switch“ sein.

Rückgabe

Die Bedingungsart des Switch-Ziels lautet QkConditionType.

qk_control_flow_switch_target_bit

uint32_t qk_control_flow_switch_target_bit(const QkControlFlowInstruction *cf_inst)

Den klassischen Bit-Index für ein Switch-Ziel abrufen.

Diese Funktion gibt den Index des klassischen Bits zurück, auf das eine Switch-Anweisung wirkt, wenn das Switch-Ziel ein klassisches Bit ist.

Es kommt zu einer Panik, wenn cf_inst keine „Switch“-Anweisung zur Ablaufsteuerung mit einem klassischen Bit-Ziel ist.

Beispiel

// Assuming cf_inst is a Switch instruction with a classical bit target
uint32_t clbit_idx = qk_control_flow_switch_target_bit(cf_inst);
printf("Switch operates on clbit %u\n", clbit_idx);

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf die Kontrollflussanweisung. Die Kontrollflussanweisung muss vom Typ „Switch“ sein und ein klassisches Bit-Ziel haben.

Rückgabe

Der Index des klassischen Bits in der Schaltung.

qk_control_flow_switch_target_register

const QkClassicalRegister *qk_control_flow_switch_target_register(const QkControlFlowInstruction *cf_inst)

Ruft das klassische Register ab, auf das eine Switch-Anweisung wirkt.

Diese Funktion ruft das klassische Register ab, das als Ziel des Schalters verwendet wird, wenn der Schalter auf ein Register einwirkt.

Es kommt zu einem Fehler, wenn cf_inst keine „Switch“-Anweisung zur Steuerung des Programmablaufs mit einem Register als Ziel ist.

Beispiel

// Assuming cf_inst is a Switch instruction with a register target
const QkClassicalRegister *reg = qk_control_flow_switch_target_register(cf_inst);
// Use the register to get its name, size, etc...

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf die Kontrollflussanweisung. Die Kontrollflussanweisung muss vom Typ „Switch“ sein und ein Register als Ziel haben.

Rückgabe

Ein Zeiger auf das QkClassicalRegister Objekt, auf das der Switch angewendet wird. Das Register ist so lange gültig, wie die Anweisung zur Steuerung des Programmablaufs existiert. Das Register gehört zur Kontrollflussanweisung und darf vom Aufrufer nicht freigegeben werden.

qk_control_flow_switch_target_expr

const QkExprNode *qk_control_flow_switch_target_expr(const QkControlFlowInstruction *cf_inst)

Den Ausdruck für ein Switch-Ziel abrufen.

Diese Funktion gibt einen Zeiger auf den klassischen Ausdruck zurück, auf den eine Switch-Anweisung angewendet wird, wenn das Switch-Ziel ein Ausdruck ist.

Löst eine Panik aus, wenn cf_inst keine „Switch“-Anweisung zur Steuerung des Programmablaufs mit einem Ausdrucksziel ist.

Beispiel

// Assuming cf_inst is a Switch instruction with an expression target
const QkExpr *target_expr = qk_control_flow_switch_target_expr(cf_inst);
// Evaluate the expression...

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf die Kontrollflussanweisung. Die Anweisung zur Ablaufsteuerung muss vom Typ „Switch“ sein und ein Ausdrucksziel haben.

Rückgabe

Ein Zeiger auf den QkExpr Ausdruck, der das Switch-Ziel darstellt. Der Ausdruck ist gültig, solange die Anweisung zur Steuerung des Programmablaufs vorhanden ist. Der Ausdruck gehört zur Ablaufsteuerungsanweisung und darf vom Aufrufer nicht freigegeben werden.

qk_control_flow_switch_num_cases

size_t qk_control_flow_switch_num_cases(const QkControlFlowInstruction *cf_inst)

Ermitteln Sie die Anzahl der Fälle in einer Switch-Anweisung.

Gibt die Gesamtzahl der „case“-Blöcke in der „switch“-Anweisung zurück, einschließlich des „default“-Falls, falls vorhanden.

Es kommt zu einem Fehler, wenn cf_inst keine „Switch“-Anweisung zur Steuerung des Programmablaufs ist.

Beispiel

// Assuming cf_inst is a Switch control flow instruction
size_t num_cases = qk_control_flow_switch_num_cases(cf_inst);
for (size_t i = 0; i < num_cases; i++) {
    // Analyze the case...
}

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf die Kontrollflussanweisung. Die Anweisung zur Steuerung des Programmablaufs muss vom Typ „Switch“ sein.

Rückgabe

Die Anzahl der Fälle in der Switch-Anweisung.

qk_control_flow_switch_is_case_default

bool qk_control_flow_switch_is_case_default(const QkControlFlowInstruction *cf_inst, size_t case_idx)

Prüfe, ob ein bestimmter Fall in einer Switch-Anweisung der Standardfall ist.

Switch-Anweisungen können einen „default“-Fall enthalten, der dann zutrifft, wenn kein anderer Fall zutrifft. Diese Funktion prüft, ob der Fall am angegebenen Index der Standardfall ist. Der Standardfall kann auch führende Bezeichnungen enthalten, die durch qk_control_flow_switch_case_labels_uint im Standardfall abgerufen werden können.

Es kommt zu einem Fehler, wenn cf_inst keine „Switch“-Anweisung zur Steuerung des Programmablaufs ist.

Beispiel

// Assuming cf_inst is a Switch control flow instruction
for (size_t i = 0; i < qk_control_flow_switch_num_cases(cf_inst); i++) {
    if (qk_control_flow_switch_is_case_default(cf_inst, i)) {
        printf("Case %zu is the default case\n", i);
    }
}

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf die Kontrollflussanweisung. Die Anweisung zur Steuerung des Programmablaufs muss vom Typ „Switch“ sein.
  • case_idx – Der Index des zu prüfenden Falls. Muss kleiner sein als der von qk_control_flow_switch_num_cases… zurückgegebene Wert.

Rückgabe

true Wenn der Fall bei case_idx der Standardfall ist, false ansonsten.

qk_control_flow_switch_case_labels_bit_width

uint64_t qk_control_flow_switch_case_labels_bit_width(const QkControlFlowInstruction *cf_inst, size_t case_idx)

Ermitteln Sie die maximale Bitbreite, die zur Darstellung der Bezeichnungen in einem „Switch case“ erforderlich ist.

Diese Funktion gibt die maximale Anzahl an Bits zurück, die benötigt wird, um eine der vorzeichenlosen Ganzzahl-Bezeichnungen im angegebenen Fall darzustellen. Dies ist hilfreich, um die Mindestbitbreite zu ermitteln, die zum Speichern oder Verarbeiten der Fallbezeichnungen erforderlich ist.

Es kommt zu einem Fehler, wenn cf_inst keine „Switch“-Anweisung zur Steuerung des Programmablaufs ist.

Beispiel

// Assuming cf_inst is a Switch control flow instruction
uint64_t bit_width = qk_control_flow_switch_case_labels_bit_width(cf_inst, 0);
printf("Maximum bit width for case 0: %lu\n", bit_width);

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist.

Parameter

  • cf_inst – Ein Zeiger auf die Kontrollflussanweisung. Die Anweisung zur Steuerung des Programmablaufs muss vom Typ „Switch“ sein.
  • case_idx – Der Index des Falls, dessen Label-Bitbreite abgerufen werden soll. Muss kleiner sein als der von qk_control_flow_switch_num_cases… zurückgegebene Wert.

Rückgabe

Die maximale Bitbreite der Bezeichnungen im Fall oder 0, wenn der Fall keine Bezeichnungen für vorzeichenlose Ganzzahlen enthält (z. B. nur einen DEFAULT-Spezifizierer).

qk_control_flow_switch_case_labels_uint

QkSwitchCaseLabels qk_control_flow_switch_case_labels_uint(const QkControlFlowInstruction *cf_inst, size_t case_idx)

Rufe die Labels für einen bestimmten Fall in einer Switch-Anweisung ab.

case(1, 2, 3)Jeder Fall in einer Switch-Anweisung kann eine oder mehrere Bezeichnungen haben (z. B. hat drei Bezeichnungen: 1, 2 und 3). Diese Funktion ruft alle Bezeichnungen für einen bestimmten Fall ab. Beachten Sie, dass der Standardfall auch Beschriftungen enthalten kann, die mit dieser Funktion abgerufen werden können. Wird die Funktion in einem Standardfall ohne zusätzliche Bezeichnungen aufgerufen, setzt num_labels = 0 sie und labels = NULL in der zurückgegebenen QkSwitchCaseLabels Struktur. uint64_tBevor Sie diese Funktion aufrufen, sollten Sie verwenden qk_control_flow_switch_case_labels_bit_width , um sicherzustellen, dass die Beschriftungen in passen.

uint64_tEs kommt zu einem Fehler, wenn cf_inst keine „Switch“-Anweisung zur Steuerung des Programmablaufs ist oder wenn ein „case“-Label nicht in passt.

Beispiel

// Assuming cf_inst is a Switch control flow instruction
QkSwitchCaseLabels case_labels = qk_control_flow_switch_case_labels_uint(cf_inst, 0);
for (size_t i = 0; i < case_labels.num_labels; i++) {
    printf("Label %zu: %lu\n", i, case_labels.labels[i]);
}
qk_control_flow_switch_case_labels_clear(&case_labels);

Sicherheit

QkControlFlowInstructionDas Verhalten ist nicht definiert, wenn cf_inst kein gültiger Zeiger auf ein ist oder wenn out_labels kein gültiger Zeiger auf eine QkSwitchCaseLabels Struktur ist.

Parameter

  • cf_inst – Ein Zeiger auf die Kontrollflussanweisung. Die Anweisung zur Steuerung des Programmablaufs muss vom Typ „Switch“ sein.
  • case_idx – Der Index des Falls, dessen Bezeichnungen abgerufen werden sollen. Muss kleiner sein als der von qk_control_flow_switch_num_cases… zurückgegebene Wert.

Rückgabe

Eine QkSwitchCaseLabels Struktur mit den Label-Informationen für den angegebenen Fall. Die Struktur enthält einen Zeiger auf ein Array von Bezeichnungen sowie die Anzahl der Bezeichnungen. In num_labels > 0diesem Fall sollten Sie die Funktion aufrufen qk_control_flow_switch_case_labels_clear , um den von dieser Funktion zugewiesenen Speicher freizugeben.

qk_control_flow_switch_case_labels_clear

void qk_control_flow_switch_case_labels_clear(QkSwitchCaseLabels *labels)

Eine QkSwitchCaseLabels Struktur löschen.

qk_control_flow_switch_case_labels_uintDiese Funktion muss aufgerufen werden, um den von … zugewiesenen Speicher freizugeben. Nach dem Aufruf dieser Funktion wird der Zeiger „labels“ in der Struktur auf null gesetzt und der Zähler auf null zurückgesetzt.

Beispiel

// Assuming cf_inst is a Switch control flow instruction
QkSwitchCaseLabels case_labels = qk_control_flow_switch_case_labels_uint(cf_inst, 0);
// Use the labels...
qk_control_flow_switch_case_labels_clear(&case_labels);

Sicherheit

QkSwitchCaseLabelsDas Verhalten ist nicht definiert, wenn labels kein gültiger Zeiger auf ein ist.

Parameter

  • labels – Ein Zeiger auf die QkSwitchCaseLabels zu löschende Struktur. Die Struktur muss zuvor mit qk_control_flow_switch_case_labels_uint. gefüllt worden sein.
War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.