C/C++:调用函数来初始化全局变量
2017-06-23 16:36
337 查看
C/C++:调用函数来初始化全局变量
实验环境:[jiang@eb50 ~]$ uname -a Linux eb50 2.6.18-348.el5 #1 SMP Wed Nov 28 21:22:00 EST 2012 x86_64 x86_64 x86_64 GNU/Linux gcc 版本 4.1.2 20080704 (Red Hat 4.1.2-54)
先看看C的:
#include <stdio.h> #include <time.h> time_t mt = time(NULL); int foo() { return 10; } int x = foo(); int main() { fprintf(stdout, "%s", ctime(&mt)); fprintf(stdout, "%d\n", x); return 0; }
[jiang@eb50 ~]$ gcc -o main main.c main.c:4: 错误:初始值设定元素不是常量 main.c:11: 错误:初始值设定元素不是常量
再来看看C++的:
#include <iostream> #include <time.h> using namespace std; time_t mt = time(NULL); int foo() { return 10; } int x = foo(); int main() { cout<<ctime(&mt); cout<<x<<endl; return 0; }
[jiang@eb50 ~]$ g++ -o main main.C [jiang@eb50 ~]$ ./main Fri Jun 23 16:30:26 2017 10
再试试用g++编译那个C文件:
[jiang@eb50 ~]$ g++ -o main main.c [jiang@eb50 ~]$ ./main Fri Jun 23 16:31:04 2017 10
==通过了…
思考个问题:
#include <iostream> #include <unistd.h> #include <time.h> using namespace std; time_t mt1 = time(NULL); unsigned int r1 = sleep(1); time_t mt2 = time(NULL); unsigned int r2 = sleep(1); time_t mt3 = time(NULL); int main() { cout<<mt1<<endl; cout<<mt2<<endl; cout<<mt3<<endl; return 0; }
是否是有序调用的?可以保证吗?
相关文章推荐
- C++中,全局阈只能声明、初始化变量; 不能用于赋值、运算、调用函数等
- C C++全局变量初始化 initializer element is not constant 错误 c++中为什么不能对全局变量在函数外赋值
- C/C++的全局变量初始化与不初始化的区别
- C/C++关于全局变量和局部变量初始化与不初始化的区别
- C/C++中全局变量,静态局部变量,局部变量的初始化问题
- C++理解全局变量在调用函数中的应用
- C/C++ 的全局变量初始化与不初始化的区别
- C/C++的全局变量能否利用函数初始化?
- C/C++关于全局变量和局部变量初始化与不初始化的区别
- C/C++ --- 全局变量初始化总结
- C/C++关于全局变量和局部变量初始化与不初始化的区别
- C++全局变量初始化顺序
- c++全局变量初始化时间
- C/C++之全局、static对象/变量的初始化问题
- C++全局变量初始化顺序
- 关于C/C++中全局变量的初始化问题的深入思考
- c++ 全局变量和静态变量的初始化
- C/C++的全局变量初始化与不初始化的区别
- C/C++的全局变量初始化与不初始化的区别
- c/c++的全局变量初始化顺序