Skip to content

StrInitStack

StrInitStack

Description

Initialize given string but use memory from stack. Such strings cannot be dynamically resized!!

Parameters

Name Direction Description
str in String that needs to be initialized.
ne in Number of elements to allocate stack memory for.

Success

str

Failure

NULL

Usage example (Cross-references)

Usage examples (Cross-references)
    #endif
                Str syserr;
                StrInitStack(syserr, SYS_ERROR_STR_MAX_LENGTH, {
                    SysStrError(errno, &syserr);
                    LOG_ERROR("Failed to get localtime : {}", syserr);
    LOG_STREAM_FALLBACK: {
        Str syserr;
        StrInitStack(syserr, SYS_ERROR_STR_MAX_LENGTH, {
            FWriteFmtLn(stderr, "Error opening log file, will write logs to stderr");
        });
    // Test StrInitStack macro
    bool test_str_init_stack(void) {
        WriteFmt("Testing StrInitStack\n");
    
        bool result = true;
        // Test with the actual StrInitStack macro
        Str stack_str;
        StrInitStack(stack_str, 20, {
            // Inside the scope where the stack string is valid
            StrPushBackZstr(&stack_str, "Hello, Stack!");
            StrWriteFmt(&m_, __VA_ARGS__);                                                                                 \
            Str syserr_;                                                                                                   \
            StrInitStack(syserr_, 256, {                                                                                   \
                SysStrError(errno, &syserr_);                                                                              \
                StrWriteFmt(&m_, " : {}", syserr_);                                                                        \
            StrWriteFmt(&m_, __VA_ARGS__);                                                                                 \
            Str syserr_;                                                                                                   \
            StrInitStack(syserr_, 256, {                                                                                   \
                SysStrError(errno, &syserr_);                                                                              \
                StrWriteFmt(&m_, " : {}", syserr_);                                                                        \
            StrWriteFmt(&m_, __VA_ARGS__);                                                                                 \
            Str syserr_;                                                                                                   \
            StrInitStack(syserr_, 256, {                                                                                   \
                SysStrError(errno, &syserr_);                                                                              \
                StrWriteFmt(&m_, " : {}", syserr_);                                                                        \
Last updated on