Code Monkey home page Code Monkey logo

fccf's Introduction

fccf: Fast C/C++ Code Finder

fccf is a command-line tool that quickly searches through C/C++ source code in a directory based on a search string and prints relevant code snippets that match the query.

Highlights

  • Quickly identifies source files that contain a search string.
  • For each candidate source file, builds an abstract syntax tree (AST).
  • Visits the nodes in the AST, looking for function declarations, classes, enums, variables etc., that match the user's request.
  • Pretty-prints the identified snippet of source code to the terminal.
  • MIT License

Searching the Linux kernel source tree

The following video shows fccf searching and finding snippets of code in torvalds/linux.

Searching.the.Linux.Kernel.Source.Tree.mp4

Searching the fccf source tree (Modern C++)

The following video shows fccf searching the fccf C++ source code.

Note that search results here include:

  1. Class declaration
  2. Functions and function templates
  3. Variable declarations, including lambda functions
Searching.the.fccf.Source.Tree.mp4

Search for any of --flag that matches

Provide an empty query to match any --flag, e.g., any enum declaration.

image

... or any class constructor

image

Searching a for statement

Use --for-statement to search for statements. fccf will try to find for statements (including C++ ranged for) that contain the query string.

image

Searching expressions

Use the --include-expressions option to find expressions that match the query.

The following example shows fccf find calls to isdigit().

image

The following example shows fccf finding references to the clang_options variable.

image

Searching for using declarations

Use the --using-declaration option to find using declarations, using directives, and type alias declarations.

image

Searching for namespace aliases

Use the --namespace-alias option to find namespace aliases.

image

Searching for throw expressions

Use --throw-expression with a query to search for specific throw expressions that contain the query string.

image

As presented earlier, an empty query here will attempt to match any throw expression in the code base:

image

Build Instructions

Build fccf using CMake. For more details, see BUILDING.md.

NOTE: fccf requires libclang and LLVM installed.

# Install libclang and LLVM
# sudo apt install libclang-dev llvm

git clone https://github.com/p-ranav/fccf
cd fccf

# Build
cmake -S . -B build -D CMAKE_BUILD_TYPE=Release
cmake --build build

# Install
sudo cmake --install build

fccf Usage

foo@bar:~$ fccf --help
Usage: fccf [--help] [--version] [--help] [--exact-match] [--json] [--filter VAR] [-j VAR] [--enum] [--struct] [--union] [--member-function] [--function] [--function-template] [-F] [--class] [--class-template] [--class-constructor] [--class-destructor] [-C] [--for-statement] [--namespace-alias] [--parameter-declaration] [--typedef] [--using-declaration] [--variable-declaration] [--verbose] [--include-expressions] [--static-cast] [--dynamic-cast] [--reinterpret-cast] [--const-cast] [-c] [--throw-expression] [--ignore-single-line-results] [--include-dir VAR]... [--language VAR] [--std VAR] [--no-color] query [path]...

Positional arguments:
  query                                
  path                                 [nargs: 0 or more] 

Optional arguments:
  -h, --help                           shows help message and exits 
  -v, --version                        prints version information and exits 
  -h, --help                           Shows help message and exits 
  -E, --exact-match                    Only consider exact matches 
  --json                               Print results in JSON format 
  -f, --filter                         Only evaluate files that match filter pattern [nargs=0..1] [default: "*.*"]
  -j                                   Number of threads [nargs=0..1] [default: 5]
  --enum                               Search for enum declaration 
  --struct                             Search for struct declaration 
  --union                              Search for union declaration 
  --member-function                    Search for class member function declaration 
  --function                           Search for function declaration 
  --function-template                  Search for function template declaration 
  -F                                   Search for any function or function template or class member function 
  --class                              Search for class declaration 
  --class-template                     Search for class template declaration 
  --class-constructor                  Search for class constructor declaration 
  --class-destructor                   Search for class destructor declaration 
  -C                                   Search for any class or class template or struct 
  --for-statement                      Search for `for` statement 
  --namespace-alias                    Search for namespace alias 
  --parameter-declaration              Search for function or method parameter 
  --typedef                            Search for typedef declaration 
  --using-declaration                  Search for using declarations, using directives, and type alias declarations 
  --variable-declaration               Search for variable declaration 
  --verbose                            Request verbose output 
  --ie, --include-expressions          Search for expressions that refer to some value or member, e.g., function, variable, or enumerator. 
  --static-cast                        Search for static_cast 
  --dynamic-cast                       Search for dynamic_cast 
  --reinterpret-cast                   Search for reinterpret_cast 
  --const-cast                         Search for const_cast 
  -c                                   Search for any static_cast, dynamic_cast, reinterpret_cast, orconst_cast expression 
  --throw-expression                   Search for throw expression 
  --isl, --ignore-single-line-results  Ignore forward declarations, member function declarations, etc. 
  -I, --include-dir                    Additional include directories [nargs=0..1] [default: {}] [may be repeated]
  -l, --language                       Language option used by clang [nargs=0..1] [default: "c++"]
  --std                                C++ standard to be used by clang [nargs=0..1] [default: "c++17"]
  --nc, --no-color                     Stops fccf from coloring the output 

How it works

  1. fccf does a recursive directory search for a needle in a haystack - like grep or ripgrep - It uses an SSE2 strstr SIMD algorithm (modified Rabin-Karp SIMD search; see here) if possible to quickly find, in multiple threads, a subset of the source files in the directory that contain a needle.
  2. For each candidate source file, it uses libclang to parse the translation unit (build an abstract syntax tree).
  3. Then it visits each child node in the AST, looking for specific node types, e.g., CXCursor_FunctionDecl for function declarations.
  4. Once the relevant nodes are identified, if the node's "spelling" (libclang name for the node) matches the search query, then the source range of the AST node is identified - source range is the start and end index of the snippet of code in the buffer
  5. Then, it pretty-prints this snippet of code. I have a simple lexer that tokenizes this code and prints colored output.

Note on include_directories

For all this to work, fccf first identifies candidate directories that contain header files, e.g., paths that end with include/. It then adds these paths to the clang options (before parsing the translation unit) as -Ifoo -Ibar/baz etc. Additionally, for each translation unit, the parent and grandparent paths are also added to the include directories for that unit in order to increase the likelihood of successful parsing.

Additional include directories can also be provided to fccf using the -I or --include-dir option. Using verbose output (--verbose), errors in the libclang parsing can be identified and fixes can be attempted (e.g., adding the right include directories so that libclang is happy).

To run fccf on the fccf source code without any libclang errors, I had to explicitly provide the include path from LLVM-12 like so:

foo@bar:~$ fccf --verbose 'lexer' . --include-dir /usr/lib/llvm-12/include/
Checking ./source/lexer.cpp
Checking ./source/lexer.hpp
Checking ./source/searcher.cpp

// ./source/lexer.hpp (Line: 14 to 40)
class lexer
{
  std::string_view m_input;
  fmt::memory_buffer* m_out;
  std::size_t m_index {0};
  bool m_is_stdout {true};

  char previous() const;
  char current() const;
  char next() const;
  void move_forward(std::size_t n = 1);
  bool is_line_comment();
  bool is_block_comment();
  bool is_start_of_identifier();
  bool is_start_of_string();
  bool is_start_of_number();
  void process_line_comment();
  void process_block_comment();
  bool process_identifier(bool maybe_class_or_struct = false);
  void process_string();
  std::size_t get_number_of_characters(std::string_view str);

public:
  void tokenize_and_pretty_print(std::string_view source,
                                 fmt::memory_buffer* out,
                                 bool is_stdout = true);
}

References

  1. SIMD-friendly algorithms for substring searching
  2. libclang: C Interface to Clang

fccf's People

Contributors

btaczala avatar muttleyxd avatar p-ranav avatar thunder-coding avatar to-s avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

fccf's Issues

compile on Mac OS 12.2.1 have problem

Hi,
Thanks for your project. I'm interested in this project, so I try to compile on osx, but I got an error. I found out the problem later, so I open an issue. Is it a real problem?
(I installed dependency first, brew install cmake llvm, then I build)
ld: warning: directory not found for option '-L/usr/local/Cellar/llvm/13.0.1_1/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names'
ld: library not found for -lLLVM-13
clang: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[2]: *** [CMakeFiles/fccf_exe.dir/build.make:107: fccf] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:228: CMakeFiles/fccf_exe.dir/all] Error 2
gmake: *** [Makefile:156: all] Error 2

I fixed it by adding one line below.

--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -111,6 +111,7 @@ target_include_directories(

target_compile_features(fccf_lib PUBLIC cxx_std_17)
target_compile_options (fccf_lib PRIVATE -fexceptions)
+separate_arguments(LLVM_LDFLAGS UNIX_COMMAND "${LLVM_LDFLAGS}")
target_link_options(fccf_lib PRIVATE ${LLVM_LDFLAGS})
target_link_libraries(fccf_lib PRIVATE fmt::fmt Threads::Threads)

Compilation error in ArchLinux

Hi :)

In the linking step, it can't find clang-related libraries while I already have installed Clang and LLVM both on my system.

$ cmake --build build                                                             via △ v3.23.1 took 8s
[ 11%] Building CXX object _deps/fmt-build/CMakeFiles/fmt.dir/src/format.cc.o
[ 22%] Building CXX object _deps/fmt-build/CMakeFiles/fmt.dir/src/os.cc.o
[ 33%] Linking CXX static library libfmt.a
[ 33%] Built target fmt
[ 44%] Building CXX object CMakeFiles/fccf_lib.dir/source/searcher.cpp.o
[ 55%] Building CXX object CMakeFiles/fccf_lib.dir/source/sse2_strstr.cpp.o
[ 66%] Building CXX object CMakeFiles/fccf_lib.dir/source/lexer.cpp.o
[ 77%] Building CXX object CMakeFiles/fccf_lib.dir/source/utf8.cpp.o
[ 77%] Built target fccf_lib
[ 88%] Building CXX object CMakeFiles/fccf_exe.dir/source/main.cpp.o
[100%] Linking CXX executable fccf
/usr/bin/ld: cannot find -lclangTooling: No such file or directory
/usr/bin/ld: cannot find -lclangFrontendTool: No such file or directory
/usr/bin/ld: cannot find -lclangFrontend: No such file or directory
/usr/bin/ld: cannot find -lclangDriver: No such file or directory
/usr/bin/ld: cannot find -lclangSerialization: No such file or directory
/usr/bin/ld: cannot find -lclangCodeGen: No such file or directory
/usr/bin/ld: cannot find -lclangParse: No such file or directory
/usr/bin/ld: cannot find -lclangSema: No such file or directory
/usr/bin/ld: cannot find -lclangStaticAnalyzerFrontend: No such file or directory
/usr/bin/ld: cannot find -lclangStaticAnalyzerCheckers: No such file or directory
/usr/bin/ld: cannot find -lclangStaticAnalyzerCore: No such file or directory
/usr/bin/ld: cannot find -lclangAnalysis: No such file or directory
/usr/bin/ld: cannot find -lclangARCMigrate: No such file or directory
/usr/bin/ld: cannot find -lclangEdit: No such file or directory
/usr/bin/ld: cannot find -lclangAST: No such file or directory
/usr/bin/ld: cannot find -lclangLex: No such file or directory
/usr/bin/ld: cannot find -lclangBasic: No such file or directory
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/fccf_exe.dir/build.make:107: fccf] Error 1
make[1]: *** [CMakeFiles/Makefile2:228: CMakeFiles/fccf_exe.dir/all] Error 2
make: *** [Makefile:156: all] Error 2

The Clang header directory:

ls -l /usr/include/clang
total 104
drwxr-xr-x 6 root root 4096 Apr  1 12:06 Analysis
drwxr-xr-x 2 root root 4096 Apr  1 12:06 APINotes
drwxr-xr-x 2 root root 4096 Apr  1 12:06 ARCMigrate
drwxr-xr-x 2 root root 4096 Apr  1 12:06 AST
drwxr-xr-x 3 root root 4096 Apr  1 12:06 ASTMatchers
drwxr-xr-x 2 root root 4096 Apr  1 12:06 Basic
drwxr-xr-x 2 root root 4096 Apr  1 12:06 CodeGen
drwxr-xr-x 2 root root 4096 Apr  1 12:06 Config
drwxr-xr-x 2 root root 4096 Apr  1 12:06 CrossTU
drwxr-xr-x 2 root root 4096 Apr  1 12:06 DirectoryWatcher
drwxr-xr-x 2 root root 4096 Apr  1 12:06 Driver
drwxr-xr-x 2 root root 4096 Apr  1 12:06 Edit
drwxr-xr-x 2 root root 4096 Apr  1 12:06 Format
drwxr-xr-x 2 root root 4096 Apr  1 12:06 Frontend
drwxr-xr-x 2 root root 4096 Apr  1 12:06 FrontendTool
drwxr-xr-x 2 root root 4096 Apr  1 12:06 Index
drwxr-xr-x 2 root root 4096 Apr  1 12:06 IndexSerialization
drwxr-xr-x 2 root root 4096 Apr  1 12:06 Interpreter
drwxr-xr-x 2 root root 4096 Apr  1 12:06 Lex
drwxr-xr-x 2 root root 4096 Apr  1 12:06 Parse
drwxr-xr-x 4 root root 4096 Apr  1 12:06 Rewrite
drwxr-xr-x 2 root root 4096 Apr  1 12:06 Sema
drwxr-xr-x 2 root root 4096 Apr  1 12:06 Serialization
drwxr-xr-x 5 root root 4096 Apr  1 12:06 StaticAnalyzer
drwxr-xr-x 2 root root 4096 Apr  1 12:06 Testing
drwxr-xr-x 9 root root 4096 Apr  1 12:06 Tooling

I'm using ArchLinux with latest update of all packages.

Flag to turn off / customize colors

Unfortunately the color fccf uses to print filenames is the same as my terminal background color, making the lines invisible. It would be nice, if there was a switch to turn off the colored output (like when stdout is not a tty), so you can add it in an alias.

Ultimately it would be great, if it was possible to customize the colors. I do realize that might be quite a task (as you need a way to get the colors into the program), but considering fccf does colors code quite extensively I think it does make sense that eventually such a feature would exist.

Search for function/variable usage

I do most of my "code exploration" with ag and I always wished something like this would exist, so thanks for doing it! And I think searching for declarations is quite cool already, but it's usually not very hard to do without an AST. It is much harder to search for usage of functions and variables though. Would it be possible to add this to fccf?

Ability to skip forward class declarations.

Currently searching especially in large code bases can make the fccf process a lot of files.

Use case: User wants to search for a class Bunny in the code.
Execution: fccf -C Bunny
Expected behavior:

// ./Animals/Fun/Bunny.cpp (Line: 24 to 29)
struct Bunny {
  bool plushy;
  Color eyeColor;
  Color furColor;
}

Actual Behavior:

// ./Animals/Predators/Wolf.cpp (Line: 20 to 20)
class Bunny

// ./Farm/Fur/BunnyFarm.cpp (Line: 20 to 20)
class Bunny

... etc

It would be nice to have -C skip forward declarations, or have an option to skip them. If there's such an option I haven't found it. Not only it would help get user what he wants, but it would reduce search times significantly.
On a large code base (~3mln LoC) that optimizes with forward class declarations, looking up a class can take up to 10 minutes. If these wouldn't be matched, it would take up to few seconds.

Building on WSL Ubuntu 20.04 - Could use compiler and clang-config detection.

First off, thanks for Your contribution to the society. This application is incredible and I'm already thinking of a way of integrating it into my development flow!

When building, first I have to specify CMAKE_CXX_COMPILER, which is already odd. Release is important otherwise it seems more dependencies are required.. Then I encounter error with strip, which is caused by empty ${LLVM_LIBRARIES} etc, which are pulled from clang-config.

$ cmake .. -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 -DCMAKE_BUILD_TYPE=Release
-- Module support is disabled.
-- Version: 8.1.2
-- Build type: Release
-- CXX_STANDARD: 17
-- Required features: cxx_variadic_templates
-- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
-- Found LLVM 12.0.0


-- Using LLVMConfig.cmake in: /usr/lib/llvm-12/cmake
CMake Error at CMakeLists.txt:73 (string):
  string sub-command STRIP requires two arguments.


CMake Error at CMakeLists.txt:78 (string):
  string sub-command STRIP requires two arguments.


CMake Error at CMakeLists.txt:83 (string):
  string sub-command STRIP requires two arguments.


-- Configuring incomplete, errors occurred!
See also "/mnt/c/r/fccf/.build/CMakeFiles/CMakeOutput.log".
See also "/mnt/c/r/fccf/.build/CMakeFiles/CMakeError.log".

In my system I'm using llvm12, so default clang-config (old one), shouldn't be used (and is not present in the system), perhaps it should be configurable and CMakeLists.txt shoud check whether it exists and is executable. I've solved this by modifying the CMakeLists.txt.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1156a5c..4ed1f14 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -68,17 +68,17 @@ add_definitions(${LLVM_DEFINITIONS})
 add_definitions(${CLANG_DEFINITIONS})

 # LLVM link libraries
-execute_process(COMMAND llvm-config --libs all
+execute_process(COMMAND llvm-config-12 --libs all
   OUTPUT_VARIABLE LLVM_LIBRARIES)
 string(STRIP ${LLVM_LIBRARIES} LLVM_LIBRARIES)

 # LLVM LD flags
-execute_process(COMMAND llvm-config --ldflags
+execute_process(COMMAND llvm-config-12 --ldflags
   OUTPUT_VARIABLE LLVM_LDFLAGS)
 string(STRIP ${LLVM_LDFLAGS} LLVM_LDFLAGS)

 # LLVM CXX FLAGS
-execute_process(COMMAND llvm-config --cxxflags
+execute_process(COMMAND llvm-config-12 --cxxflags
   OUTPUT_VARIABLE LLVM_CXXFLAGS)
 string(STRIP ${LLVM_CXXFLAGS} LLVM_CXXFLAGS)

Then the build fails on #include <clang-c/Index.h>, which doesn't seem to be present in my system (find /usr -iname 'Index.h' and find /usr -ipath '*/clang-c' returns nothing.).

PS. After some time I've figured that libclang-12-dev was missing.

$ cmake .. -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 -DCMAKE_BUILD_TYPE=Release
-- Module support is disabled.
-- Version: 8.1.2
-- Build type: Release
-- CXX_STANDARD: 17
-- Required features: cxx_variadic_templates
-- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
-- Found LLVM 12.0.0
-- Using LLVMConfig.cmake in: /usr/lib/llvm-12/cmake
-- Configuring done
-- Generating done
-- Build files have been written to: /mnt/c/r/fccf/.build
$ make
Scanning dependencies of target fmt
[ 11%] Building CXX object _deps/fmt-build/CMakeFiles/fmt.dir/src/format.cc.o
[ 22%] Building CXX object _deps/fmt-build/CMakeFiles/fmt.dir/src/os.cc.o
[ 33%] Linking CXX static library libfmt.a
[ 33%] Built target fmt
Scanning dependencies of target fccf_lib
[ 44%] Building CXX object CMakeFiles/fccf_lib.dir/source/searcher.cpp.o
/mnt/c/r/fccf/source/searcher.cpp:8:10: fatal error: 'clang-c/Index.h' file not found
#include <clang-c/Index.h>  // This is libclang.
         ^~~~~~~~~~~~~~~~~
1 error generated.
make[2]: *** [CMakeFiles/fccf_lib.dir/build.make:63: CMakeFiles/fccf_lib.dir/source/searcher.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:150: CMakeFiles/fccf_lib.dir/all] Error 2
make: *** [Makefile:152: all] Error 2

So coming from this, I do think that compiler could be detected automatically. Also clang-config should be at least tested and settable using something like -DLLVM_CONFIG=/usr/bin/llvm-config-12.
In total I've installed libclang-12-dev libclang-cpp12-dev llvm-12-dev zlib1g.

Compile on Ubuntu 18.04 has a problem

I am getting this build error when running the cmake --build build command. The error is below,

<path>/fccf/source/searcher.cpp: In static member function ‘static void search::searcher::file_search(std::string_view, std::string_view)’:
<path>/fccf/source/searcher.cpp:88:15: error: ‘CXTranslationUnit_IgnoreNonErrorsFromIncludedFiles’ was not declared in this scope
   88 |             | CXTranslationUnit_IgnoreNonErrorsFromIncludedFiles);
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Build settings,

-- The CXX compiler identification is GNU 9.4.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Module support is disabled.
-- Version: 8.1.2
-- Build type: Release
-- CXX_STANDARD: 17
-- Performing Test has_std_17_flag
-- Performing Test has_std_17_flag - Success
-- Performing Test has_std_1z_flag
-- Performing Test has_std_1z_flag - Success
-- Required features: cxx_variadic_templates
-- Found LLVM 6.0.0
-- Using LLVMConfig.cmake in: /usr/lib/llvm-6.0/cmake
-- Linker detection: unknown
-- Looking for C++ include pthread.h
-- Looking for C++ include pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Configuring done
-- Generating done

CMakelists.txt STRIP missing "

for cmake command, there three errors in CMakelists.txt:
CMake Error at CMakeLists.txt:73 (string):
string sub-command STRIP requires two arguments.

CMake Error at CMakeLists.txt:78 (string):
string sub-command STRIP requires two arguments.

CMake Error at CMakeLists.txt:83 (string):
string sub-command STRIP requires two arguments.

should change to:
73: string(STRIP "${LLVM_LIBRARIES}" LLVM_LIBRARIES)
78: string(STRIP "${LLVM_LDFLAGS}" LLVM_LDFLAGS)
83: string(STRIP "${LLVM_CXXFLAGS}" LLVM_CXXFLAGS)

Search for member function calls of a specific class

It would be nice to able to search for member function calls of a specific name and class. If the member function has a unique name, I can just use --ie, but if there are other classes with the same member function name (or superset name) then they (ofc) get caught up in the search as well.

It would be nice to be able to specify the type of the object the member function is being called on.

Thanks!

Assert triggered using --ie

Using fccf on https://github.com/endless-sky/endless-sky as follows results in an assert being triggered:

$ fccf --ie 'Name' source/
/usr/include/c++/12.1.0/string_view:239: constexpr const std::basic_string_view<_CharT, _Traits>::value_type& std::basic_string_view<_CharT, _Traits>::operator[](size_type) const [with _CharT = char; _Traits = std::char_traits<char>; const_reference = const char&; size_type = long unsigned int]: Assertion '__pos < this->_M_len' failed.
[1]    49800 IOT instruction (core dumped)  fccf --ie 'Name' source/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.