"What's your go-to tool as a programmer these days?"

My brain, same as it always has been!

"What's your go-to tool as a programmer these days?"  My brain, same as it always has been! ๐Ÿ˜„
you are viewing a single comment's thread
view the rest of the comments
[โ€“] 10 points 1 year ago (6 children)
  • [โ€“] 6 points 1 year ago (4 children)

    Unless you're programming in assembly

  • source
  • parent
  • hideshow 4 child comments
  • [โ€“] 2 points 1 year ago (1 child)

    I mean, in C too.

    I used it when I wrote some throwaway C++ code working with SQLite. Since it had no RAII (and I had no intention of writing my own wrapper), I had to manually cleanup multiple resources somehow. If at least one resource failed to initialize, I had to deinitialize the ones that didn't fail. It was either goto or a bunch of flags to track what is initialized. goto looked more elegant.

  • source
  • parent
  • hideshow 1 child comment
  • [โ€“] 1 point 1 year ago*

    I misremembered the whole thing. It was still related to cleaning up after a failure, but there was only one resource I had to deal with. That's how it looks like:

        sqlite3 *db;
        int r;
    
        r = sqlite3_open("./data.db", &db);
        if (r) {
            std::cerr << "Can't open the database: " << sqlite3_errmsg(db) << std::endl;
            return r;
        }
    
        r = sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS foo(...);", nullptr, nullptr, nullptr);
        if (r != SQLITE_OK) {
            std::cerr << "Can't create a table called foo: " << sqlite3_errmsg(db) << std::endl;
            goto out;
        }
    
        // a few more sqlite3_exec calls;
        // some sqlite3_prepare_v2 calls combined with sqlite3_bind_* and sqlite3_step calls
        // for repeated queries.
    
    out:
        sqlite3_close(db);
        return r;
    
  • source
  • parent