stdio_s.h Header wird nicht gefunden in Visual Studio Code

OP #7469772
Lesenswert?

Hallo, ich habe ein kleines SpielTutorial ausm GitHub gezogen um mir die C++ Syntax genauer anzuschauen. Kriege eine Meldung, dass eine Funktion nicht definiert ist

1
identifier "swprintf_s" is undefined

dafür brauche ich den stdio_s.h Header und dieser scheint im Verzeichnis drin zu sein (siehe Bild im Anhang). Mein Visual Studio Code aber sieht dies anscheinend net...

1
stdio_s.h: No such file or directoryGCC

Kann mir jemand sagen woran es liegt ?

VG

Angehängte Dateien:
OP #7469782
Lesenswert?

[x] #include "stdio_s.h" [x] #include <stdio_s.h> [x] #include <sec_api/stdio_s.h>

die ersten zwei Ansätze hatte ich ausprobiert, hatte nicht getan. Den dritten gerade, tut auch net.

Also habe folgende includes drin,

1
#include <iostream>
2
#include <thread>
3
#include <vector>
4
using namespace std;
5

6
#include <stdio.h>
7
#include <Windows.h>
8
#include <stdio_s.h>

alle tun ausser dem letzten, der stdio.h Header wird gefunden und befindet sich in dem "include" Ordner (siehe Bild), also einen Pfad höher zum stdio_s.h

*************** UPDATE ****************

das mit dem #include <sec_api/stdio_s.h> Ansatz hat doch geklappt, zumindest kriege ich jetzt keine Meldung, dass der Header nicht gefunden werden kann.

  1. Heisst es, dass wenn ich auf irgendeinen Unterordner vom Include Ordner (in diesem Fall sec_api) zugreifen möchte, dass ich dann immer den Unterordner spezifizieren muss ?

  2. Jetzt habe ich ein neues Problem, die Funktionen die ich brauche sind über ein Macro geklammert, MINGW_HAS_SECURE_API. Kennt jemand dieses ?

1
#ifndef _INC_STDIO_S
2
#define _INC_STDIO_S
3

4
#include <stdio.h>
5

6
#if defined(MINGW_HAS_SECURE_API)
7

8
#ifdef __cplusplus
9
extern "C" {
10
#endif
11

12
#ifndef _STDIO_S_DEFINED
13
#define _STDIO_S_DEFINED
14
  _CRTIMP errno_t __cdecl clearerr_s(FILE *_File);
15
  int __cdecl fprintf_s(FILE *_File,const char *_Format,...);
#7469830
Lesenswert?

Michael S. schrieb:

  1. Heisst es, dass wenn ich auf irgendeinen Unterordner vom Include Ordner (in diesem Fall sec_api) zugreifen möchte, dass ich dann immer den Unterordner spezifizieren muss ?

Wenn dieser "Unterordner" nicht separat im Include-Pfad aufgeführt wird, ja; der Präprozessor fängt nicht an, in Unterverzeichnissen zu suchen.

Hast Du Dir den Include-Pfad für Deinen Compiler mal angesehen?

(Das ist nicht eine Verzeichnisstruktur auf Deiner Festplatte, sondern ein Kommandozeilenparameter, der Deinem Compiler übergeben wird; das kann z.B. über ein Makefile erfolgen, oder aber über irgendwelche Projekteinstellungen Deiner IDE)

Beitrag #7469857 wurde von einem Moderator gelöscht.
#7470185
Lesenswert?

Michael S. schrieb:

ich habe ein kleines SpielTutorial ausm GitHub gezogen um mir die C++ Syntax genauer anzuschauen.

Und dafür nimmst du den GCC 5.1.0? Der ist von 2015. Bei C++ hat sich seitdem einiges getan...

Außerdem schaut dein Beispielcode eher nach einem ungesunden Mischmasch aus C und C++ aus. Fein wenn man weiß was man tut, sehr unglücklich, wenn das eine Vorlage zum Erlernen nur einer der beiden Sprachen sein soll.

OP #7471870
Lesenswert?

Hallo Ernst, kannst du bitte kurz erläutern wie du auf 5.1.0 gekommen bist, ja das Tetris Tutorial ist etwas älter, über 6 Jahre jetzt.

Kennst du vllt. ein paar zeitgemässe Beispiele, welche man sich anschauen könnte ?

Und dafür nimmst du den GCC 5.1.0? Der ist von 2015. Bei C++ hat sich seitdem einiges getan...

VG

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren