cJSON阅读第一天:attribute、define
1. __attribute__ 的使用
section used
18年写过一篇文章介绍used section的使用,见attribute-used-section的简单应用
visibility
gcc __attribute__关键字举例之visibility
1
2
3
4
5
6
7
/* visibility用于设置动态链接库中函数的可见性,将变量或函数设置为hidden,则该符号仅在本so中可见,在其他库中则不可见。*/
#if (defined(__GNUC__) || defined(__SUNPRO_CC) || defined (__SUNPRO_C)) && defined(CJSON_API_VISIBILITY)
#define CJSON_PUBLIC(type) __attribute__((visibility("default"))) type
#else
#define CJSON_PUBLIC(type) type
#endif
#endif
2. 宏的使用
宏后面不接任何东西
例如,__WINDOWS__后面是空白的,是为了在使用的时候能够使用第二行来表示第一行
1 2 3 4 5 6
#if !defined(__WINDOWS__) && (defined(WIN32) || defined(WIN64) || defined(_MSC_VER) || defined(_WIN32)) /* 第一行 */ #define __WINDOWS__ #endif #ifdef __WINDOWS__ /* 第二行 */ #endif
还有的用法是:防止重复包含头文件。
1 2 3 4
#ifndef XXX #define XXX ... #endif
本文由作者按照 CC BY 4.0 进行授权