[an error occurred while processing this directive]

Einführung in den Aufbau von Bezeichnern in C im Rahmen der Lehre des Programmierens mit der Programmiersprache C. (C Bezeichner C Namen C reservierte Bezeichner C reservierte Namen C), Lektion, Seite 721385
http://www.purl.org/stefan_ram/pub/c_bezeichner_de ist die kanonische URI dieser Seite.
Stefan-Ram-Startseite

Aufbau von Bezeichnern in C

Ein Bezeichner, wie beispielsweise der Bezeichner "ax_d22", kann aus kleinen und großen lateinischen Buchstaben, Ziffern, dem Grundstrich "_" und eventuell noch implementationsdefinierten Zeichen bestehen und darf nicht mit einer Ziffer beginnen. Die Verwendung implementationsspezifischer Zeichen sollte vermieden werden, weil sie die Portabilität beeinträchtigt.

identifier 〉 ::=
identifier-nondigit 〉 |
identifier 〉 〈identifier-nondigit 〉 |
identifier 〉 〈digit 〉.
identifier-nondigit 〉 ::=
nondigit 〉 |
universal-character-name 〉 |
other implementation-defined characters 〉.
nondigit 〉 ::=
'_' | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' |
'
k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' |
'
v' | 'w' | 'x' | 'y' | 'z' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' |
'
G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' |
'
R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z'.
digit 〉 ::=
'0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'.

(Das Nichtterminalsymbol universal-character-name  wird weiter unten behandelt.)

Groß- und Kleinschreibung ist in C signifikant. Mindestens die ersten 31 Zeichen eines Bezeichner sind signifikant, es gibt keine Grenze für die Länge eines Bezeichners.

Schlüsselwörter

Schlüsselwörter dürfen nicht als Bezeichner verwendet werden.

Die Schlüsselwörter sind "_Bool", "_Complex", "_Imaginary", "auto", "break", "case", "char", "const", "continue", "default", "do", "double", "else", "enum", "extern", "float", "for", "goto", "if", "inline", "int", "long", "register", "restrict", "return", "short", "signed", "sizeof", "static", "struct", "switch", "typedef", "union", "unsigned", "void", "volatile" und "while".

Reservierte Bezeichner

Bestimmte Bezeichner sind für die Implementation reserviert, sie dürfen also nicht in einer C++ -Übersetzungseinheit definiert werden. Etwas vereinfacht, handelt es sich um folgende Bezeichner:

Damit sind also beispielsweise die Bezeichner "_ghi" und "cos" reserviert.

Die Vereinfachung der hier genannten Regeln bewirkt, daß diese etwas stärker sind als notwendig: In bestimmten Fällen können Bezeichner, die mit einem Grundstrich beginnen oder die von der Standardbibliothek definiert werden, doch als Bezeichner verwendet werden. Doch für den Anfang sollten diese etwas vereinfachten Regeln ausreichen, um Konflikte mit reservierten Bezeichnern zu vermeiden.

Weitere reservierte Namen

Zur Verwendung in zukünftigen Versionen der Sprache werden folgende Namen für Implementationen reserviert:

Der POSIX -Standard wird gelegentlich zusammen mit C verwendet und reserviert alle Namen, die mit "_t" enden.

Universelle Zeichennamen

Ein universeller Zeichenname bezeichnet ein Zeichen nach der Norm ISO/IEC 10646. Bestimmte Buchstaben und Ziffern nach dieser Norm (jedoch nicht die aus dem ASCII -Code-Bereich) können in Bezeichnern ebenfalls verwendet werden, wobei auch hier eine Ziffer nicht am Anfang eines Bezeichners stehen darf. Dabei wird ein Zeichen durch den Quelltext "\u" oder "\U" geschrieben, dem vier bzw. acht Hexadezimalziffern zur hexadezimalen Darstellung der Kennzahl des Zeichens folgen.

Eine Implementation kann auch spezielle Codierungen für solche Zeichen zulassen.

universal-character-name 〉 ::=
'\u' 〈hex-quad 〉 |
'
\U' 〈hex-quad 〉 〈hex-quad 〉.
hex-quad 〉 ::=
hexadecimal-digit 〉 〈hexadecimal-digit 〉 〈hexadecimal-digit 〉 〈hexadecimal-digit 〉.

Namen der Standardbibliothek

Die bereits von der Standardbibliothek definierten Namen dürfen nicht umdefiniert werden.

Im folgenden steht "#" für eine Ziffer oder mehrere Ziffern.

Die von der Standardbibliothek definierten Bezeichner sind "BUFSIZ", "CHAR_BIT", "CHAR_MAX", "CHAR_MIN", "CLOCKS_PER_SEC", "CX_LIMITED_RANGE", "DBL_DIG", "DBL_EPSILON", "DBL_MANT_DIG", "DBL_MAX", "DBL_MAX_10_EXP", "DBL_MAX_EXP", "DBL_MIN", "DBL_MIN_10_EXP", "DBL_MIN_EXP", "DECIMAL_DIG", "EDOM", "EILSEQ", "EOF", "ERANGE", "EXIT_FAILURE", "EXIT_SUCCESS", "FENV_ACCESS", "FE_ALL_EXCEPT", "FE_DFL_ENV", "FE_DIVBYZERO", "FE_DOWNWARD", "FE_INEXACT", "FE_INVALID", "FE_OVERFLOW", "FE_TONEAREST", "FE_TOWARDZERO", "FE_UNDERFLOW", "FE_UPWARD", "FILE", "FILENAME_MAX", "FLT_DIG", "FLT_EPSILON", "FLT_EVAL_METHOD", "FLT_MANT_DIG", "FLT_MAX", "FLT_MAX_10_EXP", "FLT_MAX_EXP", "FLT_MIN", "FLT_MIN_10_EXP", "FLT_MIN_EXP", "FLT_RADIX", "FLT_ROUNDS", "FOPEN_MAX", "FP_CONTRACT", "FP_FAST_FMA", "FP_FAST_FMAF", "FP_FAST_FMAL", "FP_ILOGB0", "FP_ILOGBNAN", "FP_INFINITE", "FP_NAN", "FP_NORMAL", "FP_SUBNORMAL", "FP_ZERO", "HUGE_VAL", "HUGE_VALF", "HUGE_VALL", "I", "INFINITY", "INT#_C", "INT#_MAX", "INT#_MIN", "INTMAX#_C", "INTMAX_MAX", "INTMAX_MIN", "INTPTR_MAX", "INTPTR_MIN", "INT_FAST#_MAX", "INT_FAST#_MIN", "INT_LEAST#_MAX", "INT_LEAST#_MIN", "INT_MAX", "INT_MIN", "LC_ALL", "LC_COLLATE", "LC_CTYPE", "LC_MONETARY", "LC_NUMERIC", "LC_TIME", "LDBL_DIG", "LDBL_EPSILON", "LDBL_MANT_DIG", "LDBL_MAX", "LDBL_MAX_10_EXP", "LDBL_MAX_EXP", "LDBL_MIN", "LDBL_MIN_10_EXP", "LDBL_MIN_EXP", "LLONG_MAX", "LLONG_MIN", "LONG_MAX", "LONG_MIN", "L_tmpnam", "MATH_ERREXCEPT", "MATH_ERRNO", "MB_CUR_MAX", "MB_LEN_MAX", "NAN", "NDEBUG", "NULL", "NULL", "NULL", "NULL", "NULL", "NULL", "NULL", "PRIX#", "PRIXFAST#", "PRIXLEAST#", "PRIXMAX", "PRIXPTR", "PRId#", "PRIdFAST#", "PRIdLEAST#", "PRIdMAX", "PRIdPTR", "PRIi#", "PRIiFAST#", "PRIiLEAST#", "PRIiMAX", "PRIiPTR", "PRIo#", "PRIoFAST#", "PRIoLEAST#", "PRIoMAX", "PRIoPTR", "PRIu#", "PRIuFAST#", "PRIuLEAST#", "PRIuMAX", "PRIuPTR", "PRIx#", "PRIxFAST#", "PRIxLEAST#", "PRIxMAX", "PRIxPTR", "PTRDIFF_MAX", "PTRDIFF_MIN", "RAND_MAX", "SCHAR_MAX", "SCHAR_MIN", "SCNd#", "SCNdFAST#", "SCNdLEAST#", "SCNdMAX", "SCNdPTR", "SCNi#", "SCNiFAST#", "SCNiLEAST#", "SCNiMAX", "SCNiPTR", "SCNo#", "SCNoFAST#", "SCNoLEAST#", "SCNoMAX", "SCNoPTR", "SCNu#", "SCNuFAST#", "SCNuLEAST#", "SCNuMAX", "SCNuPTR", "SCNx#", "SCNxFAST#", "SCNxLEAST#", "SCNxMAX", "SCNxPTR", "SEEK_CUR", "SEEK_END", "SEEK_SET", "SHRT_MAX", "SHRT_MIN", "SIGABRT", "SIGFPE", "SIGILL", "SIGINT", "SIGSEGV", "SIGTERM", "SIG_ATOMIC_MAX", "SIG_ATOMIC_MIN", "SIG_DFL", "SIG_ERR", "SIG_IGN", "SIZE_MAX", "TMP_MAX", "UCHAR_MAX", "UINT#_C", "UINT#_MAX", "UINTMAX#_C", "UINTMAX_MAX", "UINTPTR_MAX", "UINT_FAST#_MAX", "UINT_LEAST#_MAX", "UINT_MAX", "ULLONG_MAX", "ULONG_MAX", "USHRT_MAX", "WCHAR_MAX", "WCHAR_MAX", "WCHAR_MIN", "WCHAR_MIN", "WEOF", "WEOF", "WINT_MAX", "WINT_MIN", "_Complex_I", "_Exit", "_IOFBF", "_IOLBF", "_IONBF", "_Imaginary_I", "_Pragma", "__bool_true_false_are_defined", "abort", "abs", "acos", "acos", "acosf", "acosh", "acosh", "acoshf", "acoshl", "acosl", "and", "and_eq", "asctime", "asin", "asin", "asinf", "asinh", "asinh", "asinhf", "asinhl", "asinl", "assert", "atan", "atan", "atan2", "atan2", "atan2f", "atan2l", "atanf", "atanh", "atanh", "atanhf", "atanhl", "atanl", "atexit", "atof", "atoi", "atol", "atoll", "bitand", "bitor", "bool", "bsearch", "btowc", "cabs", "cabsf", "cabsl", "cacos", "cacosf", "cacosh", "cacoshf", "cacoshl", "cacosl", "calloc", "carg", "carg", "cargf", "cargl", "casin", "casinf", "casinh", "casinhf", "casinhl", "casinl", "catan", "catanf", "catanh", "catanhf", "catanhl", "catanl", "cbrt", "cbrtf", "cbrtl", "ccos", "ccosf", "ccosh", "ccoshf", "ccoshl", "ccosl", "ceil", "ceil", "ceilf", "ceill", "cexp", "cexpf", "cexpl", "cimag", "cimag", "cimagf", "cimagl", "clearerr", "clock", "clock_t", "clog", "clogf", "clogl", "compl", "complex", "conj", "conj", "conjf", "conjl", "copysign", "copysign", "copysignf", "copysignl", "cos", "cos", "cosf", "cosh", "cosh", "coshf", "coshl", "cosl", "cpow", "cpowf", "cpowl", "cproj", "cproj", "cprojf", "cprojl", "creal", "creal", "crealf", "creall", "csin", "csinf", "csinh", "csinhf", "csinhl", "csinl", "csqrt", "csqrtf", "csqrtl", "ctan", "ctanf", "ctanh", "ctanhf", "ctanhl", "ctanl", "ctime", "difftime", "div", "div_t", "double_t", "erf", "erf", "erfc", "erfc", "erfcf", "erfcl", "erff", "erfl", "errno", "exit", "exp", "exp", "exp2", "exp2", "exp2f", "exp2l", "expf", "expl", "expm1", "expm1", "expm1f", "expm1l", "fabs", "fabs", "fabsf", "fabsl", "false", "fclose", "fdim", "fdim", "fdimf", "fdiml", "feclearexept", "fegetenv", "fegetexceptflag", "fegetround", "feholdexcept", "fenv_t", "feof", "feraiseexcept", "ferror", "fesetenv", "fesetexceptflag", "fesetround", "fetestexcept", "feupdateenv", "fexept_t", "fflush", "fgetc", "fgetpos", "fgets", "fgetwc", "fgetws", "float_t", "floor", "floor", "floorf", "floorl", "fma", "fma", "fmaf", "fmal", "fmax", "fmax", "fmaxf", "fmaxl", "fmin", "fmin", "fminf", "fminl", "fmod", "fmod", "fmodf", "fmodl", "fopen", "fpclassify", "fpos_t", "fprintf", "fputc", "fputs", "fputwc", "fputws", "fread", "free", "freopen", "frexp", "frexp", "frexpf", "frexpl", "fscanf", "fseek", "fsetpos", "ftell", "fwide", "fwprintf", "fwrite", "fwscanf", "getc", "getchar", "getenv", "gets", "getwc", "getwchar", "gmtime", "hypot", "hypot", "hypotf", "hypotl", "ilogb", "ilogb", "ilogbf", "ilogbl", "imaginary", "imaxabs", "imaxdiv", "imaxdiv_t", "int#_t", "int_fast#_t", "int_least#_t", "intmax_t", "intptr_t", "isalnum", "isalpha", "isblank", "iscntrl", "isdigit", "isfinite", "isgraph", "isgreater", "isgreaterequal", "isinf", "isless", "islessequal", "islessgreater", "islower", "isnan", "isnormal", "isprint", "ispunct", "isspace", "isunordered", "isupper", "iswalnum", "iswalpha", "iswblank", "iswcntrl", "iswctype", "iswdigit", "iswgraph", "iswlower", "iswprint", "iswpunct", "iswspace", "iswupper", "iswxdigit", "isxdigit", "jmp_buf", "labs", "lconv", "ldexp", "ldexp", "ldexpf", "ldexpl", "ldiv", "ldiv_t", "lgamma", "lgamma", "lgammaf", "lgammal", "llabs", "lldiv", "lldiv_t", "llrint", "llrint", "llrintf", "llrintl", "llround", "llround", "llroundf", "llroundl", "localeconv", "localtime", "log", "log", "log10", "log10", "log10f", "log10l", "log1p", "log1p", "log1pf", "log1pl", "log2", "log2", "log2f", "log2l", "logb", "logb", "logbf", "logbl", "logf", "logl", "longjmp", "lrint", "lrint", "lrintf", "lrintl", "lround", "lround", "lroundf", "lroundl", "malloc", "math_errhandling", "mblen", "mbrlen", "mbrtowc", "mbsinit", "mbsrtowcs", "mbstate_t", "mbstowcs", "mbtowc", "memchr", "memcmp", "memcpy", "memmove", "memset", "mktime", "modf", "modff", "modfl", "nan", "nanf", "nanl", "nearbyint", "nearbyintf", "nearbyintl", "nextafter", "nextafter", "nextafterf", "nextafterl", "nexttoward", "nexttoward", "nexttowardf", "nexttowardl", "not", "not_eq", "offsetof", "or", "or_eq", "perror", "pow", "pow", "powf", "powl", "printf", "ptrdiff_t", "putc", "putchar", "puts", "putwc", "putwchar", "qsort", "raise", "rand", "realloc", "remainder", "remainder", "remainderf", "remainderl", "remove", "remquo", "remquo", "remquof", "remquol", "rename", "rewind", "rint", "rint", "rintf", "rintl", "round", "round", "roundf", "roundl", "scalbln", "scalbln", "scalblnf", "scalblnl", "scalbn", "scalbn", "scalbnf", "scalbnl", "scanf", "setbuf", "setjmp", "setlocale", "setvbuf", "sig_atomic_t", "signal", "sin", "sin", "sinf", "sinh", "sinh", "sinhf", "sinhl", "sinl", "size_t", "size_t", "size_t", "size_t", "size_t", "size_t", "snprintf", "sprintf", "sqrt", "sqrt", "sqrtf", "sqrtl", "srand", "sscanf", "stderr", "stdin", "stdout", "strcat", "strchr", "strcmp", "strcoll", "strcpy", "strcspn", "strerror", "strftime", "strlen", "strncat", "strncmp", "strncpy", "strpbrk", "strrchr", "strspn", "strstr", "strtod", "strtof", "strtoimax", "strtok", "strtol", "strtold", "strtoll", "strtoul", "strtoull", "strtoumax", "strxfrm", "swprintf", "swscanf", "system", "tan", "tan", "tanf", "tanh", "tanh", "tanhf", "tanhl", "tanl", "tgamma", "tgamma", "tgammaf", "tgammal", "time", "time_t", "tm", "tm", "tmpfile", "tmpnam", "tolower", "toupper", "towctrans", "towlower", "towupper", "true", "trunc", "trunc", "truncf", "truncl", "uint#_t", "uint_fast#_t", "uint_least#_", "uintmax_t", "uintptr_t", "ungetc", "ungetwc", "va_arg", "va_copy", "va_end", "va_list", "va_start", "vfprintf", "vfscanf", "vfwprintf", "vfwscanf", "vprintf", "vscanf", "vsnprintf", "vsprintf", "vsscanf", "vswprintf", "vswscanf", "vwprintf", "vwscanf", "wchar_t", "wchar_t", "wchar_t", "wcrtomb", "wcscat", "wcschr", "wcscmp", "wcscoll", "wcscpy", "wcscspn", "wcsftime", "wcslen", "wcsncat", "wcsncmp", "wcsncpy", "wcspbrk", "wcsrchr", "wcsrtombs", "wcsspn", "wcsstr", "wcstod", "wcstof", "wcstoimax", "wcstok", "wcstol", "wcstold", "wcstoll", "wcstombs", "wcstoul", "wcstoull", "wcstoumax", "wcsxfrm", "wctob", "wctomb", "wctrans", "wctrans_t", "wctype", "wctype_t", "wint_t", "wint_t", "wmemchr", "wmemcmp", "wmemcpy", "wmemmove", "wmemset", "wprintf", "wscanf", "xor" und "xor_eq".

Von der Stefan-Ram-Startseite ausgehend finden sich oft noch mehr Informationen zu Themen, die auf einer Seite angesprochen wurden. (Eine Verbindung zur Stefan-Ram-Startseite befindet sich ganz oben auf dieser Seite.)  |   Seiteninformation und Impressum  |   Formular für diese Seite betreffende Mitteilungen an den Herausgeber  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. slrprd, PbclevtugFgrsnaEnz