diff --git a/docs/languages/C&C++/modern_cpp.md b/docs/languages/C&C++/modern_cpp.md index 4f5d9570..970ea0e2 100644 --- a/docs/languages/C&C++/modern_cpp.md +++ b/docs/languages/C&C++/modern_cpp.md @@ -22,7 +22,7 @@ foo(nullptr); // 调用 foo(char*) > #define NULL 0 > #define NULL nullptr > ``` -> 在 msvc 中,`NULL` 的实现为 `#define NULL 0`,因此上面的代码是可以通过编译的;而在 gcc 和 clang 中,`NULL` 的实现为 `#define NULL __null`,此处 `__null` 是一个 `long` 类型的 0,同样是符合标准的。 +> 在 MSVC 中,`NULL` 的实现为 `#define NULL 0`,因此上面的代码是可以通过编译的;而在 GCC 和 Clang 中,`NULL` 的实现为 `#define NULL __null`,此处 `__null` 是一个 `long` 类型的 0,同样是符合标准的。 > > 因此,对于 `foo(NULL)` 而言,`foo(int)` 和 `foo(char*)` 都不是精确的参数类型匹配,因此不能通过编译(会提示 `foo` 的调用是不明确的);而如果加入 `void foo(long);` 的声明,则 `foo(NULL)` 精确地匹配到了 `foo(long)`,因此可以通过编译。