[cpp.embed.param.suffix]

# 15 Preprocessing directives [[cpp]](./#cpp)

## 15.4 Resource inclusion [[cpp.embed]](cpp.embed#param.suffix)

### 15.4.2 Embed parameters [[cpp.embed.param]](cpp.embed.param#suffix)

#### 15.4.2.3 suffix parameter [cpp.embed.param.suffix]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/preprocessor.tex#L1136)

An [*embed-parameter*](cpp.pre#nt:embed-parameter "15.1 Preamble [cpp.pre]") of the form

suffix ( [*pp-balanced-token-seq*](cpp.pre#nt:pp-balanced-token-seq "15.1 Preamble [cpp.pre]")opt )

shall appear at most once in the [*embed-parameter-seq*](cpp.pre#nt:embed-parameter-seq "15.1 Preamble [cpp.pre]")[.](#1.sentence-1)

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/preprocessor.tex#L1143)

If the resource is empty, this [*embed-parameter*](cpp.pre#nt:embed-parameter "15.1 Preamble [cpp.pre]") is ignored[.](#2.sentence-1)

Otherwise, the [*pp-balanced-token-seq*](cpp.pre#nt:pp-balanced-token-seq "15.1 Preamble [cpp.pre]") is placed immediately after
the comma-delimited list of the integral constant expressions[.](#2.sentence-2)

[*Example [1](#example-1)*: constexpr unsigned char whl[] = {#embed "ches.glsl" \
 prefix(0xEF, 0xBB, 0xBF, ) /* a sequence of bytes */ \
 suffix(,)0};// always null-terminated, contains the sequence if not emptyconstexpr bool is_empty = sizeof(whl) == 1 && whl[0] == '\0';constexpr bool is_not_empty = sizeof(whl) >= 4&& whl[sizeof(whl) - 1] == '\0'&& whl[0] == '\xEF' && whl[1] == '\xBB' && whl[2] == '\xBF';static_assert(is_empty || is_not_empty); â *end example*]
