将常量数传递给size_t*参数时,gcc不会发出警告

Fel*_*tti 2 c gcc compiler-flags compiler-warnings

我的代码是这样的:

#define ZERO_CONSTANT 0
foo(size_t * p_size);

foo(ZERO_CONSTANT); //Doesn't warn
Run Code Online (Sandbox Code Playgroud)

哪个gcc标志会拨打电话foo(ZERO_CONSTANT)进行警告?

Bat*_*eba 5

没有编译标志可以帮助你.C标准定义了文字0代表任何类型的空指针值.很多时候你会看到0,NULL(void*)0.

(注意清楚,这并意味着存储器地址是0.因为它是未定义的行为总体上的积分值分配给任何指针类型,0被用作占位符文字为空指针).