c++ - C和C++中的外部变量有什么区别?
问题描述
b.c
编译失败但b.cpp
可以编译。我不太明白 C 和 C++ 之间的 extern 的区别。任何人都可以帮助解释为什么b.c
不起作用,但b.cpp
可以吗?谢谢。
$ cat b.c
extern int b;
int a = b;
$ gcc -g -Wall -pedantic -c -o b.o b.c
b.c:4:9: error: initializer element is not a compile-time constant
int a = b;
^
1 error generated.
$ cat b.cpp
extern int b;
int a = b;
$ g++ -g -Wall -pedantic -c -o b.o b.cpp
$ ls -g b.o
-rw-r--r-- 1 staff 2640 Jan 5 10:22 b.o
解决方案
extern
C 和 C++ 中的变量之间没有显着差异。不同的是,有效初始值设定项的规则。在 C 中,具有静态存储持续时间的变量的初始值设定项必须是编译时常量。在 C++ 中,它几乎可以是任何表达式(包括复杂的函数调用)。
推荐阅读
- gridview - RowDataBound 事件 - 引用另一个 GridView 数据?
- python - IndexError:元组索引超出范围(LSTM)
- excel - 如何根据其他单元格值要求 VBA 转到该列
- facebook - FB Graph API 不会在帖子的评论、喜欢、反应中返回用户对象
- spring-cloud - 引起:java.lang.NoClassDefFoundError: com/netflix/discovery/shared/resolver/EurekaEndpoint
- javascript - 在 Django 中,如何使用 Java Script 修改动态表单中的字段名称
- sql-server - 密钥存储提供程序不能设置多次错误(始终使用 JDBC 加密)
- terraform - Terraform中基于json响应的嵌套循环,用于多个资源目标
- python - 如果路径成本相同,是否可以使用统一成本搜索 (UCS) 返回多个路径?
- python - 如何检查字符串是否仅包含有效数量的空格