Skip to content

UB31⚓︎

author: Xiangzhi Liu.

Definition⚓︎

The identifier func is explicitly declared (6.4.2.2).

Description⚓︎

标识符 func 被用户显示声明。

func 是预定义标识符,应该被编译器隐式地声明为函数的第一条 statement,如下所示

static const char __func__[] = "function-name";
因而用户不应该将 func 再次声明。

Code⚓︎

UB31.c
#include <stdio.h>

int main() {
    int __func__ = 0;
    printf("%d\n", __func__);
    return 0;
}

Configurations⚓︎

gcc version 4.9.2

Target: x86_64-w64-mingw32

MSVC _MSC_VER = 1928

Target: x86_64

Behaviors⚓︎

编译报错:[Error] expected identifier or '(' before 'func'

编译通过无警告 输出:0

Advice⚓︎

不要定义 ___ 开头的标识符