1. 程式人生 > >【C/C++錯誤警示】全域性變數外不能賦值

【C/C++錯誤警示】全域性變數外不能賦值

今天寫了一段程式碼,一開始就編譯不過。簡言之,是犯了這樣的錯誤。

我在所有的函式外寫了類似這樣的程式碼(只是用一個簡單的例子說明)

int i;
i = 0;

報錯資訊長這樣: [Error] 'i' does not name a type

原因:不能在函式外給全域性變數賦值。

補充:雖然不能在函式外給全域性變數賦值,但可以初始化,即int i = 0;

解決方案:簡單的資料型別可以直接初始化,複雜的(如自定義的struct, class等,或是陣列 、容器等)可以在函式外定義,在函式內賦值。比如我寫了一個init()函式,為這些全域性變數賦值。

相關推薦

C/C++錯誤警示全域性變數不能

今天寫了一段程式碼,一開始就編譯不過。簡言之,是犯了這樣的錯誤。 我在所有的函式外寫了類似這樣的程式碼(只是用一個簡單的例子說明) int i; i = 0; 報錯資訊長這樣: [Error] 'i' does not name a type 原因:不能在函式外給全

回撥函式的返回全域性變數問題

            今天遇到一個問題,在js中,回撥函式的返回值對全域性變數進行賦值,網上的解決方案主要是把非同步改為同步 async: false,好記性不如爛筆頭來記錄一下。             原始碼如下: $('#loginSubmit').click

C#全域性變數全域性靜態變數、區域性變數、區域性靜態變數的區別

C#中變數分為:全域性變數、靜態全域性變數、區域性變數和靜態區域性變數。 1、按儲存區域分        (1)全域性變數、靜態全域性變數和靜態區域性變數都存放在記憶體的靜態儲存區域;        (2)區域性變數存放在記憶體的棧區。  2、按作用域分   

C, C++中全域性變數的預設

來源:http://blog.csdn.net/yanzheshi/article/details/45950275 在GCC編譯器下各個型別的全域性變數的預設值:  1、表示數字的變數型別預設值都為0  2、bool型預設值為false  3、stri

簡單的C語言巨集定義結合全域性變數的方法實現微控制器串列埠實現透傳模式

何謂透傳? 根據百度百科給出的定義如下:        透傳,即透明傳輸(pass-through),指的是在通訊中不管傳輸的業務內容如何,只負責將傳輸的內容由源地址傳輸到目的地址,而不對業務資料內容做任何改變。        在現實微控制器產品開發過程中,如果存在多個

Effective C++構造/析構/運算

文章目錄 一、瞭解C++默默編呼叫了哪些函式 1、編譯器預設呼叫的函式 2、請記住 二、若不想使用編譯器自動生成的函式,就該明確拒絕 1、拒絕編譯器自動生成的函式 2、請記住

資訊學奧賽C++(一)語句

一、基本知識 在C/C++中,“=” 在語言中的作用並非是數學意義上的“等於號”,也不表示判斷。 “=”在這裡的意思是賦值:表示把它右邊的值賦給左邊。 一般形式為:變數=表示式 有的時候編譯器會提示不

Android資料傳遞全域性變數的使用方法(附原始碼)

android中Application是用來儲存全域性變數的,在package建立的時候就存在了,到所有的activity都被destroy掉之後才會被釋放掉。所以當我們需要全域性變數的時候只要在application中去實現,通過呼叫Context的getApplica

51微控制器C語言程式設計雜談基礎----全域性變數和區域性變數

<  部落格宗旨:文章短,時間短,不考驗耐力    > 我記著我在開始編寫51微控制器程式的時候,老是在思考一個問題:怎麼把一個函式中的值傳到另一個函式中去呢???讓我痛不堪言。雖然簡單,但是在那個時候我還是不知道的。 全域性變數:就是在整個工程都可以使用

java對被final修飾的變數進行的幾種方法

對被final修飾的變數進行賦值的幾種方法 這是精華: 因為當類被載入進記憶體的時候,這個屬性並沒有給其分配記憶體空間,而只是定義了一個變數,只有當類被例項化的時候這個屬性才被分配記憶體空

C語言中結構體變數之間

/********************************************************************** * 版權所有 (C)2015, Zhou Zhaoxiong。 * * 檔名稱:Struct2Struct.c * 檔案標識:無 * 內容摘要:結構體變數之間的賦值

C語言入門(4)——常量、變數

對於基本資料型別量,按其取值是否可改變又分為常量和變數兩種。在程式執行過程中,其值不發生改變的量稱為常量,其值可變的量稱為變數。它們可與資料型別結合起來分類。常量常量有字元常量(CharacterConstant)、數字常量和列舉常量。列舉常量以後再介紹,現在我們看看如何使用

C語言中變數問題總結

正是如此一般來說 全域性變數、靜態變數處於資料區,預設初始化為0 (如果指定初始值,則為指定的值)而區域性變數處於堆疊區,其數值是隨機的,即當時記憶體中的值。總體來說不要利用編譯器的這種預設原則而是應當顯示的指定必要的初始化不是笨拙而是規範

c語言中const 型別變數地址給指標。

const在C語言中是表示道義上保證變數的值不會被修改,並不能實際阻止修改,通過指標可以修改常變數的值,但是會出現一些不可知的結果。幾種情況不同,我們一個一個來看。 1、直接賦值 const int a = 3; a = 5; // const.c:6:2: error: assignment of read

Java多執行緒共享變數&同步-非同步容器&執行緒區域性變數

共享變數 (Volatile Atomic) volatile:當多個執行緒訪問一個成員變數的時候,需要這個變數在多個執行緒中可見。 Atomic:Atomic方法對該變數的操作是原子性操作,顆粒度是到對這個變數的一次操作。 private stati

shell設定變數的預設的幾種寫法

1.  if [ -z "$VAR" ] then VAR="some default" fi 2.  [ -z "$VAR" ] && VAR="some default" 3.  [ ! "$VAR" ] && VAR="some def

zhlan--Python中的運算符

運算 alt ges 比較 images pytho 比較運算符 賦值 技術分享 >>>>Python中的賦值運算符: >>>>Python中的比較運算符: zhlan--【偷】Python中的賦值運算符

shellLinux shell 直接和間接

shell linux 變量 運維 什麽是直接賦值? 1.作者直接賦予參數值的方式稱為直接賦值。 2.一般來說,由交互的方式賦值為間接賦值。 例1: varl=arppinging.com 這種就是直接賦值,由編程作者直接賦予固定的值。 例2: [root@arppinging ~]# re

Effective C++ 筆記(2)構造/析構/運算

賦值構造 只讀 初始 pre cti copy 類構造 div vat 05、了解C++默默編寫並調用哪些函數   (1)、默認構造函數 Empty(){...} //調用父類構造函數,non-static成員變量構造函數,不會默認初始化內置類型   (2)、析構函數

Spring註解3、屬性

1、@Value 配置檔案 person.properties: person.nickName=張三 person.age=20 實體類 Person.java: @Data @AllArgsConstructor @NoArgsConstructor public class