PC geht plötzlich aus, mögliche Gründe?

Guten Tag,

mein PC geht in der letzten Zeit hin und wieder einfach plötzlich aus, als würde jemand den Stecker ziehen. Sobald es einmal passiert ist, passiert es meistens mehrmals in Folge. Also wenn ich versuche den PC wieder hochzufahren kommt der Fehler häufig direkt wieder vor, manchmal noch während des Boot Prozesses, manchmal erst auf den Desktop.

Nachdem er meistens drei oder vier mal aufgetreten ist läuft er plötzlich wieder als sei nichts gewesen. Die Ereignisanzeige zeigt Ereignis-ID 41 "Kernel Power" an, davor bzw. danach treten, sofern ich das einschätzen kann, entweder nichtssagende Ereignisse auf, wie EventLog 6008 "Das System wurde unerwartet heruntergefahren" oder Ereignisse, die ich nicht deuten kann, aber die auch nicht konstant/wiederholt auftreten. Das heißt sie kommen vielleicht vor einem Absturz vor, aber bei anderen wiederum nicht. Bspw. volmgr 161 "Erstellung einer Abbilddatei aufgrund eines Fehlers beim Erstellen der Abbildkopie fehlgeschlagen.", das kam einmal vor, aber bei anderen Abstürzen war diese Meldung nicht vorhanden.

Instinktiv würde ich einfach auf das Netzteil tippen, gibt es eine Möglichkeit das zu überprüfen? Ich hab leider nicht die Zeit noch das Geld auf gut Glück Komponenten zu kaufen.

Über Antworten und Ideen würde ich mich sehr freuen!

PC, Computer, Software, Fehler, Hardware, IT, Rechner, Informatik, Peripherie, Fehlermeldung, Komponenten
C Programmierung Problem: undef. reference oder multiple def.?

Guten Tag,

ich habe ein kleines Problem und zwar bekomme ich beim compilieren meines Programms immer die Fehlermeldung "undefined reference to" oder, wenn ich ein paar Zeilen ändere, "multiple definitions".

Aufgebaut ist es in etwa so: Ich habe eine main.c und main.h und eine foo.c und foo.h. In der foo.h habe ich einige Variablen in der Form 'extern uint8_t variable", diese sind deklariert, aber ihnen ist kein Wert zugewiesen.

//---------------------foo.h---------------------
#define CLOCKWISE_TURN 0x01
#define COUNTER_CLOCKWISE_TRUN 0x02
#define BUTTON_PRESS 0x03

extern uint8_t messageRx[8], messageTx[8];

extern uint32_t Timer_FES_Rotation_1_Pin,
		 	 	Timer_FES_Rotation_2_Pin;

void ClockwiseTurn(int steps, uint32_t timeToggle1st, uint32_t timeToggle2nd, uint32_t signalOffset);

void CounterClockwiseTurn(int steps, uint32_t timeToggle1st, uint32_t timeToggle2nd, uint32_t signalOffset);

//---------------------foo.c---------------------
#include "foo.h"

void ClockwiseTurn(int steps, uint32_t timeToggle1st, uint32_t timeToggle2nd, uint32_t signalOffset) {
     //Definition der Funktion  (Nutzt die Variablen)
}
    
void CounterClockwiseTurn(int steps, uint32_t timeToggle1st, uint32_t timeToggle2nd, uint32_t signalOffset) {
     //Definition der Funktion  (Nutzt die Variablen)
}
   
//---------------------main.c---------------------
#include "foo.h"

int main(void) {
  //Wertzuweisung der Variablen
     Timer_FES_Rotation_1_Pin = 12;
     Timer_FES_Rotation_2_Pin = 20;
   // etc. ...
  //Aufruf von (Counter)ClockwiseTurn
}

Das resultiert aber in "undefined reference", wenn ich diese aber nun in der Header-file initialisiere, dann kommt "multiple definitions". Mir ist einfach nicht ganz klar wieso. (Das hier Dargestellte ist eigentlich etwas komplizierter, die Funktionsaufrufe sind in Interrupts, aber ich habe es so gemacht, dass die Variablen eigentlich Werte haben müssen, bevor Interrupts initialisiert sind.)

Über Antworten würde ich mich sehr freuen!

Computer, Technik, programmieren, Informatik, C (Programmiersprache)
C/C++ Code Bug-Suche?

Ich konnte das Problem nun Lösen und würde die Lösung für zukünftige Fragesteller hier ergänzen, leider funktioniert "Frage ergänzen" bei mir leider nicht:

Antwort: Ich habe das Problem gelöst indem ich nach track_position() in check_input() die Methoden cin.clear() und cin.ignore() (in dieser Reihenfolge) aufgerufen habe.

//--------Frage-----------

Guten Tag,

ich schreibe gerade ein kleines Programm und dabei tritt ein Problem auf, das zwar kein Fehler wirft oder die Funktionalität einschränkt, mich aber trotzdem ärgert.

Ich eine Funktion check_input(), welche in einer Schleife in main aufgerufen wird und Nutzereingaben auswertet. Wenn ich track_position(...) eingebe, so funktioniert das, check_input ruft die track_position-Funktion auf und track_position (was eine Endlosschleife enthält) fragt den Nutzer in regelmäßigen Abständen, ob er track_position beenden möchte, in dem er q oder Q eingibt.

Wenn sich der Nutzer dazu entscheidet q einzugeben, so wird q beendet und wir befinden uns wieder in check_input, was praktisch aus if/else if/else mit Regex besteht. Nun gibt check_input aber immer "Invalid command" (das letzte else aus check_input um falsche Eingaben abzufangen) aus, nachdem ich track_position beendet habe und funktioniert danach ganz normal. Es ist, als wüsste check_input nicht, dass es bereits bei einer if-Bedingung angeschlagen hat und mir ist nicht wirklich klar wieso.

Es hängt auf jeden Fall mit der Nutzereingabe von "q" (durch cin >>) zusammen, denn wenn ich es einfach ohne Nutzereingabe nach einer festen Zeit beende, dann tritt der Fehler nicht auf.

Hier der aufs wesentliche reduzierte Code:

void CLI_User::check_input() {
    string in;
    getline(cin, in);
    if(regex_match(in, regex("( )*([Hh]elp|\\?)( )*"))) {
        command_list();
    }
//Hier sind noch weitere else-if Verzweigungen
    else if(regex_match(in, regex("( )*[Tt]rack_[Pp]osition\\((   )*[A-Za-z0-9]+( )*\\)"))) {
        string callsign = extract_parameter(in).at(0);
        if(callsign != "") {
            Functions::track_position(callsign);
            command_list();
        }
        else
            cout << "Invalid Parameter" << endl;
    }
    else {
        cout << "Invalid command" << endl;
    }
}

//Der Teil aus track_position(string callsign), welcher für das beenden zuständig ist

void track_position(string callsign) {
//weggekürzter Code
while(loop_flag) {
//weggekürzter Code

//if Bedingung unwichtig
        if( //alle 100 sek == wahr)
            string s = "";
              cout << "Press q + <Enter> to quit tracking and any other key + <Enter> to continue" << endl;
              cin >> s;
              if(s == "q" || s == "Q") {
                  loop_flag = 0;
                  cout << "Tracking stopped" << endl;
              }
          }
      }
  }
Computer, Technik, programmieren, cplusplus, Informatik, C (Programmiersprache)
C/C++ Code funktioniert nicht?

Guten Abend,

ich habe hier einen kleinen Code Ausschnitt, bei dem ich einfach nicht ganz verstehe, warum er nur funktioniert, wenn ich die 11te Zeile (cout << tmp_t % 10 << endl;) nicht(!) auskommentiert habe. Sobald ich daraus einen Kommentar mache komme ich nicht mehr in die if-Anweisung rein und mir ist nicht klar wieso. Alle anderen Ausgaben in dem Code kann ich auskommentieren wie ich möchte, aber an der Stelle nicht.

Sorry für die schlechte Formatierung hier auf gf.net und die unübersichtlichen Kommentare.

Wenn mir jemand helfen könnte, wäre ich sehr dankbar!

(P.S.: Der Code verfolgt in der Form noch nicht wirklich seinen Zweck, sondern ist so nur zu testzwecken.)

void Functions::track_position(string callsign) {
    vector<vector<string>> content;
    time_t tmp_t;
    time_t prev_t = -1;

    int c = 0; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    while(c++ < 20000000) {
        tmp_t = Timer::current_time();
        //mod 10 für 10 sek Intervalle
//        cout << tmp_t % 10 << endl;
        if(prev_t != tmp_t && tmp_t % 10 == 0) {
            cout << "tmp_t: " << tmp_t << endl;
            ReadCSV::read_states_CSV(&content, (prev_t = Timer::current_time()));
            data_filter(&content, &content, callsign);
//            for (vector<string> vs: content) {
//                for (string s: vs)
//                    cout << s << " ";
//                cout << endl;
//            }
        }
    }
}



PC, Computer, Technik, programmieren, cplusplus, Informatik
(Neo)Vim Coc-extension wirft einen Fehler?

Guten Abend miteinander,

ich wollte fragen, ob hier vielleicht jemand (Neo)Vim mit der Coc-extension nutzt und mir bei einem Problem helfen kann?

Und zwar wollte ich einen language server hinzufügen, damit ich autocompletion für C++ nutzen kann. Ich habe also meine coc-settings.json erzeugt und geöffnet, sie war (logischerweise) komplett leer und ich habe sie auch am richtigen Speicherort erstellt, denn sie lässt sich aus Vim heraus mit :CocConfig öffnen.

Nun bin ich der Anleitung gefolgt,

:CocConfig, which will open main config file ~/.config/nvim/coc-settings.json
(empty for new installation). Add empty JSON object (like
{})

In die geschweiften Klammern habe ich nun den ccls language server eingefügt

https://github.com/neoclide/coc.nvim/wiki/Language-servers#ccobjective-c

Leider meldet sich beim öffnen von nvim jedoch immer eine Fehlermeldung und zwar:

Error detected while processing /home/xyz/.config/nvim/coc-settings.json:                                                                                                   
line   1:                                                                                                                                   E492: Not an editor command: { line  10:                                                                                                                                  E492: Not an editor command:        }   line  11:                                                                                                                                  E492: Not an editor command:      }

... und noch ein paar gleiche Zeilen mehr, kurzum er hat was gegen die geschweiften Klammern bzw das .json Format?

Ich weiß leider nicht was ich falsch gemacht habe und wie ich es löse, kann mir jemand helfen?

Ich freue mich über jede Antwort!

Computer, Technik, Linux, programmieren, cplusplus, Shell