美文网首页
C: 在.h文件里面定义字符串常量

C: 在.h文件里面定义字符串常量

作者: 1Z实验室阿凯 | 来源:发表于2016-04-06 08:02 被阅读584次

WRONG

const char * MUTEX_NAME = "mutex_shm";
const char * FULL_NAME  = "full_shm";
const char * PATH_NAME = "./text.txt";

ERROR

cc -o edit init.o common.o
common.o:(.data+0x0): multiple definition of `MUTEX_NAME'
init.o:(.data+0x0): first defined here
common.o:(.data+0x8): multiple definition of `FULL_NAME'
init.o:(.data+0x8): first defined here
common.o:(.data+0x10): multiple definition of `PATH_NAME'
init.o:(.data+0x10): first defined here

标准C中const定义的变量是外连接的,即如果一个编译单元中定义了一个全局const常量,则其在其他编译单元中是可见的,如果其他编译单元也定义了同名const常量就会产生重复定义错误。这一点与C++不同,C++中const定义的变量是内连接的,即每个编译单元定义的全局const常量是自己独有的。

RIGHT

static const char * MUTEX_NAME = "mutex_shm";
static const char * FULL_NAME  = "full_shm";
static const char * PATH_NAME = "./text.txt";

相关文章

  • C: 在.h文件里面定义字符串常量

    WRONG ERROR 标准C中const定义的变量是外连接的,即如果一个编译单元中定义了一个全局const常量,...

  • C++中的常量

    在C++中,有两种方式定义常量 1.#define 宏常量(通常定义在文件上方)#define 常量名 常量值 ...

  • C++工具函数

    C++ 工具函数 读取二进制文件 字符串split 删除文件 定义枚举类,并将枚举常量转成int 获取当前目录剩余...

  • 代码布局排版

    @class类声明 结构体定义 枚举 C函数定义 字符串常量声明 typedef重命名 协议

  • iOS开发之C语言函数库

    在iOS开发中不可避免的需要使用数学函数进行计算,我们可以使用C标准库头文件中定义的数学常量宏及数...

  • iOS笔记

    多用类型变量,少用#define预处理指令 若不算公开某个常量,则应该定义在该常量的实现文件里: static c...

  • Swift 4.0 字符串(String)学习

    定义字符串常量(常量只有读操作) 定义字符串变量 赋值 字符串分割 字符串截取 1、string.startInd...

  • iOS 开发中的争议(一)

    在 Objective-C 的语言的早期,类的私有成员变量是只能定义在 .h 的头文件里面的。像如下这样: @in...

  • 字符串_C语言

    定义 字符串是一种重要的数据类型 C语言中,字符串以字符串常量的形式出现或存储于字符数组中 字符串常量适用于程序不...

  • [C++面试]宏相关问题

    1. 宏常量与宏函数 C++中用#define <宏名> <字符串>命令定义宏,在代码中将字符串替换宏名出现的位置...

网友评论

      本文标题:C: 在.h文件里面定义字符串常量

      本文链接:https://www.haomeiwen.com/subject/ozaplttx.html