c++ のビジュアル スタジオ コードとfmtライブラリに問題があります。ライブラリは機能しますが、書き込み時にインテリセンスがfmt/os.hヘッダーの関数を表示/入力しません。その理由は、os.h ヘッダーのこれらの行です。
私はwin10とmingw g ++を使用しており、下部に私のtasks.jsonがあります
#if (FMT_HAS_INCLUDE(<fcntl.h>) || defined(__APPLE__) || \
defined(__linux__)) && \
(!defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP))
# include <fcntl.h> // for O_RDONLY
# define FMT_USE_FCNTL 1
#else
# define FMT_USE_FCNTL 0
#endif
そのため、#define FMT_USE_FCNTL 0 を指定すると、ヘッダーの一部が intellisense によって認識されなくなります (149 行目でヘッダーの一部が「コメント化」されます)。全くの初心者なので何が何だかわかりません。これは、fmt をビルドするときに cmake でフラグを立てることができるものですか、それとも何ですか? 私にとって奇妙なことは、すべてがうまく機能しているように見えることです fmt::output_file などは機能しますが、インテリセンスはそれらの機能を認識しません。これをグーグルで調べてみましたが、知識が限られているため、どこに問題があるのかさえわかりません。
また、たとえば、以下の fmt github のサンプル コードは実行されますが、output_file コマンドを自動入力できず、名前空間 "fmt" にメンバー "output_file" がないというエラーが output_file 関数で表示されます。
#include <fmt/os.h>
int main() {
auto out = fmt::output_file("guide.txt");
out.print("Don't {}", "Panic");
}
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "build",
"command": "g++.exe",
"args": [
"-Wall",
"-g",
"-std=c++2a",
"${file}",
"${fileDirname}\\src\\*.cpp",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
// fmt includes and links
"-I",
"C:\\Users\\user\\Documents\\1links\\Git\\Git\\cpp_libs\\fmt\\include",
"-I",
"C:\\Users\\user\\Documents\\1links\\Git\\Git\\cpp_libs\\fmt\\src",
"C:\\Users\\user\\Documents\\1links\\Git\\Git\\cpp_libs\\fmt\\Build\\libfmt.a",
// library files needed to make the libraries work
],
"options": {
"cwd": "C:/MinGW/mingw32/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
また、ここに私の c_cpp_properties.json があります
{
"configurations": [
{
"name": "Mingw",
"includePath": [
"${default}",
"C:\\Users\\user\\Documents\\1links\\Git\\Git\\cpp_libs\\fmt\\include"
],
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "C:\\MinGW\\bin\\g++.exe",
"cStandard": "c17",
"cppStandard": "c++20",
"intelliSenseMode": "gcc-x86"
}
],
"version": 4
}
お時間をいただきありがとうございます。