C C 呼叫函式來初始化全域性變數

2021-08-02 22:48:50 字數 1418 閱讀 4459

實驗環境:

[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

hat4.1.2-54)

先看看c的:

#include 

#include

time_t mt = time(null);

int foo()

int x = foo();

int main()

[jiang@eb50 ~]$ gcc

-omain

main

.cmain

.c:4: 錯誤:初始值設定元素不是常量

main

.c:11: 錯誤:初始值設定元素不是常量

再來看看c++的:

#include 

#include

using

namespace

std;

time_t mt = time(null);

int foo()

int x = foo();

int main()

[jiang@eb50 ~]$ g++ -o main main.c

[jiang@eb50 ~]$ ./main

frijun

2316:30

:262017

10

再試試用g++編譯那個c檔案:

[jiang@eb50 ~]$ g++ -o main main.c

[jiang@eb50 ~]$ ./main

frijun

2316:31

:042017

10

==通過了…

思考個問題:

#include 

#include

#include

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()

是否是有序呼叫的?可以保證嗎?

未初始化全域性變數

未初始化全域性變數,這名字就很直白,就是 c 程式中定義成全域性作用域而又沒有初始化的變數,我們知道這種變數在程式執行後是被自動初始化為 全0 的。編譯器編譯的時候會將這類變數收集起來集中放置到 bss 段中,這個段只記錄了段長,沒有實際上的內容 全是0,沒必要儲存 在程式被裝載時作業系統會為它分配...

關於未初始化全域性變數

前幾天發現未初始化全域性變數一些特性,後來在一篇部落格上發現有人說過這個問題 這是原博文位址 blog.csdn.net liuqiaoyu080512 article details 8455652 然後結合原博文,自己又做了幾個實驗 以下算是自己實驗一遍以後的總結 首先,自己曾經以為未初化的全域...

C語言全域性變數的初始化

本意是想定義乙個全域性結構體變數,並設定其成變數的值。typedef struct a t a t a a.a 1 error expected asm or attribute before token a.b 2 error expected asm or attribute before to...