Error Handling to learn how the library reports run-time errors.
Environment Variables for environment variables affecting the library. Some of these environment variables enable logging to the console. This can be an effective approach to diagnose runtime problems.
The Setting up your development environment guide describes how to set up a C++ development environment in various platforms, including the Google Cloud C++ client libraries.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-14 UTC."],[[["\u003cp\u003eThis page provides documentation for the Cloud Pub/Sub C++ Client Library, which allows C++ applications to interact with Cloud Pub/Sub.\u003c/p\u003e\n"],["\u003cp\u003eThe latest version of the library is 2.37.0-rc, and the page lists all available versions down to 2.11.0, each linking to their respective documentation.\u003c/p\u003e\n"],["\u003cp\u003eThe "Hello World" example demonstrates how to use the library to publish a message to a specified project and topic.\u003c/p\u003e\n"],["\u003cp\u003eThe documentation covers various functionalities like publishing and subscribing to messages, error handling, environment variables, and overriding default configurations.\u003c/p\u003e\n"],["\u003cp\u003eTesting with googlemock is supported to mock both the \u003ccode\u003ePublisher\u003c/code\u003e and \u003ccode\u003eSubscriber\u003c/code\u003e for C++ Cloud Pub/Sub applications.\u003c/p\u003e\n"]]],[],null,["Version latestkeyboard_arrow_down\n\n- [2.42.0-rc (latest)](/cpp/docs/reference/pubsub/latest)\n- [2.41.0](/cpp/docs/reference/pubsub/2.41.0)\n- [2.40.0](/cpp/docs/reference/pubsub/2.40.0)\n- [2.39.0](/cpp/docs/reference/pubsub/2.39.0)\n- [2.38.0](/cpp/docs/reference/pubsub/2.38.0)\n- [2.37.0](/cpp/docs/reference/pubsub/2.37.0)\n- [2.36.0](/cpp/docs/reference/pubsub/2.36.0)\n- [2.35.0](/cpp/docs/reference/pubsub/2.35.0)\n- [2.34.0](/cpp/docs/reference/pubsub/2.34.0)\n- [2.33.0](/cpp/docs/reference/pubsub/2.33.0)\n- [2.32.0](/cpp/docs/reference/pubsub/2.32.0)\n- [2.31.0](/cpp/docs/reference/pubsub/2.31.0)\n- [2.30.0](/cpp/docs/reference/pubsub/2.30.0)\n- [2.29.0](/cpp/docs/reference/pubsub/2.29.0)\n- [2.28.0](/cpp/docs/reference/pubsub/2.28.0)\n- [2.27.0](/cpp/docs/reference/pubsub/2.27.0)\n- [2.26.0](/cpp/docs/reference/pubsub/2.26.0)\n- [2.25.1](/cpp/docs/reference/pubsub/2.25.1)\n- [2.24.0](/cpp/docs/reference/pubsub/2.24.0)\n- [2.23.0](/cpp/docs/reference/pubsub/2.23.0)\n- [2.22.1](/cpp/docs/reference/pubsub/2.22.1)\n- [2.21.0](/cpp/docs/reference/pubsub/2.21.0)\n- [2.20.0](/cpp/docs/reference/pubsub/2.20.0)\n- [2.19.0](/cpp/docs/reference/pubsub/2.19.0)\n- [2.18.0](/cpp/docs/reference/pubsub/2.18.0)\n- [2.17.0](/cpp/docs/reference/pubsub/2.17.0)\n- [2.16.0](/cpp/docs/reference/pubsub/2.16.0)\n- [2.15.1](/cpp/docs/reference/pubsub/2.15.1)\n- [2.14.0](/cpp/docs/reference/pubsub/2.14.0)\n- [2.13.0](/cpp/docs/reference/pubsub/2.13.0)\n- [2.12.0](/cpp/docs/reference/pubsub/2.12.0)\n- [2.11.0](/cpp/docs/reference/pubsub/2.11.0) \n\nCloud Pub/Sub C++ Client Library\n================================\n\nThe Cloud Pub/Sub C++ Client library offers types and functions to use Cloud Pub/Sub from C++ applications.\n\n### Quickstart\n\nThe following \"Hello World\" program should give you a sense of how to use the library. \n\n #include \"google/cloud/pubsub/publisher.h\"\n #include \u003ciostream\u003e\n\n int main(int argc, char* argv[]) try {\n if (argc != 3) {\n std::cerr \u003c\u003c \"Usage: \" \u003c\u003c argv[0] \u003c\u003c \" \u003cproject-id\u003e \u003ctopic-id\u003e\\n\";\n return 1;\n }\n\n std::string const project_id = argv[1];\n std::string const topic_id = argv[2];\n\n // Create a namespace alias to make the code easier to read.\n namespace pubsub = ::google::cloud::pubsub;\n\n auto publisher = pubsub::Publisher(\n pubsub::MakePublisherConnection(pubsub::Topic(project_id, topic_id)));\n auto id =\n publisher\n .Publish(pubsub::MessageBuilder{}.SetData(\"Hello World!\").Build())\n .get();\n if (!id) throw std::move(id).status();\n std::cout \u003c\u003c \"Hello World published with id=\" \u003c\u003c *id \u003c\u003c \"\\n\";\n\n return 0;\n } catch (google::cloud::Status const& status) {\n std::cerr \u003c\u003c \"google::cloud::Status thrown: \" \u003c\u003c status \u003c\u003c \"\\n\";\n return 1;\n }\n\n### More Information\n\n- [`Publisher::Publish()`](/cpp/docs/reference/pubsub/latest/classgoogle_1_1cloud_1_1pubsub_1_1Publisher#classgoogle_1_1cloud_1_1pubsub_1_1Publisher_1adcaba4f8339e31d6d296eab026164a4a) - to efficiently publish Pub/Sub messages.\n- [`BlockingPublisher::Publish()`](/cpp/docs/reference/pubsub/latest/classgoogle_1_1cloud_1_1pubsub_1_1BlockingPublisher#classgoogle_1_1cloud_1_1pubsub_1_1BlockingPublisher_1a37e3aae927a3fb1fa2e83f1663d621a1) - to publish a single Pub/Sub messages.\n- [`Subscriber::Subscribe()`](/cpp/docs/reference/pubsub/latest/classgoogle_1_1cloud_1_1pubsub_1_1Subscriber#classgoogle_1_1cloud_1_1pubsub_1_1Subscriber_1a5d9951d7bb77a77943712dc788498977) - to asynchronous receive Pub/Sub messages.\n- [`Subscriber::Pull()`](/cpp/docs/reference/pubsub/latest/classgoogle_1_1cloud_1_1pubsub_1_1Subscriber#classgoogle_1_1cloud_1_1pubsub_1_1Subscriber_1ad0707c03975538e0b2ec564cfd6ee17e) - to receive a single Pub/Sub messages.\n- [Error Handling](/cpp/docs/reference/pubsub/latest/pubsub-error-handling) to learn how the library reports run-time errors.\n- [Environment Variables](/cpp/docs/reference/pubsub/latest/pubsub-env) for environment variables affecting the library. Some of these environment variables enable logging to the console. This can be an effective approach to diagnose runtime problems.\n- [Override the default endpoint](/cpp/docs/reference/pubsub/latest/pubsub-endpoint-example)\n- [Override the authentication configuration](/cpp/docs/reference/pubsub/latest/pubsub-auth-example)\n- [Override Retry, Backoff, and Idempotency Policies](/cpp/docs/reference/pubsub/latest/pubsub-override-retry)\n- [Testing your Cloud Pub/Sub publisher application with googlemock](/cpp/docs/reference/pubsub/latest/publisher-mock) shows how to write tests mocking [Publisher](/cpp/docs/reference/pubsub/latest/classgoogle_1_1cloud_1_1pubsub_1_1Publisher)\n- [Testing your Cloud Pub/Sub subscriber application with googlemock](/cpp/docs/reference/pubsub/latest/subscriber-mock) shows how to write tests mocking [Subscriber](/cpp/docs/reference/pubsub/latest/classgoogle_1_1cloud_1_1pubsub_1_1Subscriber)\n- The [Setting up your development environment](https://cloud.google.com/cpp/docs/setup) guide describes how to set up a C++ development environment in various platforms, including the Google Cloud C++ client libraries."]]