C语言一些有用的预定义宏
发布人:shili8
发布时间:2024-11-08 08:28
阅读次数:0
**C语言中的有用预定义宏**
在 C语言中,预定义宏是编译器提供的一些特殊的符号,它们可以被用于简化程序的书写。这些宏通常与标准库函数或其他特定功能相关联。在本文中,我们将介绍一些常用的预定义宏及其应用。
###1. `NULL`
`NULL` 是一个表示空指针的预定义宏。它通常用来初始化指针变量,表明该指针尚未指向任何有效内存地址。
cint* ptr = NULL; // 初始化指针为 NULL
###2. `sizeof`
`sizeof` 是一个用于获取数据类型大小的预定义宏。它可以用来计算变量或类型所占用的字节数。
c#include <stdio.h> int main() { int var =10; printf("sizeof(int) = %lu ", sizeof(var)); // 输出 sizeof(int) return0; }
###3. `_CRT_SECURE_NO_WARNINGS`
这个预定义宏用于抑制 Microsoft Visual Studio 中的安全警告。它通常在使用旧式函数时使用。
c#define _CRT_SECURE_NO_WARNINGS#include <stdio.h> int main() { FILE* file = fopen("example.txt", "w"); if (file != NULL) { fprintf(file, "Hello, World!"); fclose(file); } return0; }
###4. `_WIN32` 和 `_WIN64`
这些预定义宏用于检测操作系统的位数。它们通常在 Windows 平台上使用。
c#ifdef _WIN32 // 检测32 位 Windows#elif defined(_WIN64) // 检测64 位 Windows#else // 其他平台#endif
###5. `__cplusplus`
这个预定义宏用于检测编译器是否支持 C++。它通常在 C++ 程序中使用。
c#ifdef __cplusplus // 检测 C++ extern "C" { void c_function(); } #endif
###6. `_MSC_VER` 和 `_MSC_FULL_VER`
这些预定义宏用于检测 Microsoft Visual Studio 的版本号和完整版本号。它们通常在 Windows 平台上使用。
c#ifdef _MSC_VER // 检测 Microsoft Visual Studio 版本 #pragma comment(lib, "example.lib") #endif
###7. `__STDC_VERSION__` 和 `_STDC_HOSTED_`
这些预定义宏用于检测 C 标准的版本和是否支持宿主环境。它们通常在 C 程序中使用。
c#ifdef __STDC_VERSION__ // 检测 C 标准版本 #if __STDC_VERSION__ >=199901L // 检测 C99 或更高版本 // 使用 C99 或更高版本的特性 #endif#endif
###8. `_GNU_SOURCE` 和 `_POSIX_C_SOURCE`
这些预定义宏用于检测 GNU C 库和 POSIX 特性的支持。它们通常在 Linux 平台上使用。
c#define _GNU_SOURCE#include <stdio.h> int main() { printf("Hello, World! "); return0; }
###9. `_LARGEFILE64_SOURCE` 和 `_FILE_OFFSET_BITS`
这些预定义宏用于检测大文件支持和位宽的设置。它们通常在 Linux 平台上使用。
c#define _LARGEFILE64_SOURCE#include <stdio.h> int main() { FILE* file = fopen("example.txt", "r"); if (file != NULL) { fseek(file,0, SEEK_END); long long size = ftell(file); fclose(file); printf("文件大小:%lld ", size); } return0; }
###10. `_XOPEN_SOURCE` 和 `_XOPEN_SOURCE_EXTENDED`
这些预定义宏用于检测 X/Open C 库和扩展特性的支持。它们通常在 Unix 平台上使用。
c#define _XOPEN_SOURCE#include <stdio.h> int main() { printf("Hello, World! "); return0; }
以上是 C语言中一些有用的预定义宏的介绍和示例代码。这些宏可以帮助你简化程序的书写并提高编程效率。