當前位置:首頁 » 編程軟體 » 安全編譯選項鏈接選項

安全編譯選項鏈接選項

發布時間: 2022-06-01 10:52:59

❶ 右鍵它,點「屬性」選項 四:選擇「安全」選項卡,在點「編輯」,就跳出了txupd.exe的許可權設置。

這個方法不好。你用下面這個
一:打開Indx(我的文檔)。然後打開「AppData」文件夾。註:AppData這個文件夾可能隱藏了。所以你要打開隱藏。至於怎麼顯示隱藏文件這里就不說了。

二:依次打開以下文件夾「Roaming」→「Tencent」→「QQ」→「AuTemp」

三:然後右擊AuTemp文件夾,點擊「屬性」選項,打開屬性對話框後,再選擇「安全」選項卡里的「編輯」。把裡面「組合用戶名」里的每一個用戶的「寫入」勾選復選框「拒絕」。然後確定。在應該就可以。

四:在回到AuTemp文件夾裡面,把裡面的內容全部刪除就可以了。這樣你登陸QQ時候它裡面就無法寫入東西了。它就不會給你更新了

如果還沒用的話,就找我

❷ 求gcc編譯與鏈接選項參數介紹的資料

gcc --help
不用資料,在命令行里有不懂的參數或者用法可以像上面那樣,[program name] --help
再詳細就翻閱GNU的手冊或者官網資料。

linux編譯時怎麼鏈接dl文件

有以下步驟:

1.源程序的編譯
在Linux下面,如果要編譯一個C語言源程序,我們要使用GNU的gcc編譯器. 下面
我們以一個實例來說明如何使用gcc編譯器.
假設我們有下面一個非常簡單的源程序(hello.c):
int main(int argc,char **argv)
{
printf("Hello Linux\n");
}
要編譯這個程序,我們只要在命令行下執行:
gcc -o hello hello.c
gcc 編譯器就會為我們生成一個hello的可執行文件.執行./hello就可以看到程
序的輸出結果了.命令行中 gcc表示我們是用gcc來編譯我們的源程序,-o 選項表示
我們要求編譯器給我們輸出的可執行文件名為hello 而hello.c是我們的源程序文件.
gcc編譯器有許多選項,一般來說我們只要知道其中的幾個就夠了. -o選項我們
已經知道了,表示我們要求輸出的可執行文件名. -c選項表示我們只要求編譯器輸出
目標代碼,而不必要輸出可執行文件. -g選項表示我們要求編譯器在編譯的時候提
供我們以後對程序進行調試的信息.
知道了這三個選項,我們就可以編譯我們自己所寫的簡單的源程序了,如果你
想要知道更多的選項,可以查看gcc的幫助文檔,那裡有著許多對其它選項的詳細說
明.
2.Makefile的編寫
假設我們有下面這樣的一個程序,源代碼如下:

❹ 中如下的編譯選項什麼意思

1.編譯目標文件
icc -c -offload-attribute-target=mic -O3 -openmp -std=c99 -DMKL_ILP64 -I/opt/intel/composer_xe_2013_sp1.1.106/mkl/include fft.c -o fft_new.o
2.連接產生可執行文件
icc fft_new.o -openmp -Wl,--start-group /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_intel_ilp64.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_intel_thread.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_core.a -Wl,--end-group -Ip-offload-option,mic,compiler,"-Wl,--start-group /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/mic/libmkl_intel_ilp64.a /opt/intel/composer_xe_2013mkl/lib/mic/libmkl_intel_thread.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/mic/libmkl_core.a -Wl,--end-group" -o fft_new.out
這里的東西較多,看上去比較復雜。
1.對於第一步,編譯出目標文件。這裡面的幾個編譯選項:
-O3 :表示最大可能優化級別。各種循環優化都執行了,並且各種文件級性質也用來改善性能
-openmp:採用了openmp並行編程
-std=c99:ANSI C是89年成為了標准,被ISO認證。之後99年ISO更新了新的C標准。所以-std用來指明編譯的C標准。在某些情況下,如果使用GCC,可能在有沖突的時候使用其他標准,比如:-std=gnu89
-DMKL_ILP64:這個是intel提供的編譯選項,主要是一個平台的指示。
-I:指定頭文件目錄
-o:重命名。
2.對於第二步,鏈接過程。其中幾個編譯選項:
-openmp:同上
-Wl:Wl選項告訴編譯器將後面的參數傳遞給鏈接器。
--start-group 和--stop-group:庫文件參數傳遞的開始和結束。
--offload-option,mic:使用offload方式使用協處理器進行運算
轉自CSDN社區beglorious的專欄

❺ vc的各編譯選項都是什麼意思

VC編譯選項

/Od 禁用優化(默認值) disable optimizations (default)
/Ox 最大化選項。(/Ogityb2 /Gs) maximum opts. (/Ogityb1 /Gs)
/Og 啟用全局優化 enable global optimization
/Oy[-] 啟用框架指針省略 enable frame pointer omission
/Oi 啟用內建函數 enable intrinsic functions

-代碼生成-
/G3 為 80386 進行優化 optimize for 80386
/G4 為 80486 進行優化 optimize for 80486
/GR[-] 啟用 C++ RTTI enable C++ RTTI
/G5 為 Pentium 進行優化 optimize for Pentium
/G6 為 Pentium Pro 進行優化 optimize for Pentium Pro
/GX[-] 啟用 C++ 異常處理(與 /EHsc 相同) enable C++ EH (same as /EHsc)
/EHs 啟用同步 C++ 異常處理 enable synchronous C++ EH
/GD 為 Windows DLL 進行優化 optimize for Windows DLL
/GB 為混合模型進行優化(默認) optimize for blended model (default)
/EHa 啟用非同步 C++ 異常處理 enable asynchronous C++ EH
/Gd __cdecl 調用約定 __cdecl calling convention
/EHc extern「C」默認為 nothrow extern "C" defaults to nothrow
/Gr __fastcall 調用約定 __fastcall calling convention
/Gi[-] 啟用增量編譯 enable incremental compilation
/Gz __stdcall 調用約定 __stdcall calling convention
/Gm[-] 啟用最小重新生成 enable minimal rebuild
/GA 為 Windows 應用程序進行優化 optimize for Windows Application
/Gf 啟用字元串池 enable string pooling
/QIfdiv[-] 啟用 Pentium FDIV 修復 enable Pentium FDIV fix
/GF 啟用只讀字元串池 enable read-only string pooling
/QI0f[-] 啟用 Pentium 0x0f 修復 enable Pentium 0x0f fix
/Gy 分隔鏈接器函數 separate functions for linker
/GZ 啟用運行時調試檢查 enable runtime debug checks
/Gh 啟用鉤子函數調用 enable hook function call
/Ge 對所有函數強制堆棧檢查 force stack checking for all funcs
/Gs[num] 禁用堆棧檢查調用 disable stack checking calls

-輸出文件-
/Fa[file] 命名程序集列表文件 name assembly listing file
/Fo 命名對象文件 name object file
/FA[sc] 配置程序集列表 configure assembly listing
/Fp 命名預編譯頭文件 name precompiled header file
/Fd[file] 命名 .PDB 文件 name .PDB file
/Fr[file] 命名源瀏覽器文件 name source browser file
/Fe 命名可執行文件 name executable file
/FR[file] 命名擴展 .SBR 文件 name extended .SBR file
/Fm[file] 命名映射文件 name map file

-預處理器-
/FI 命名強制包含文件 name forced include file
/C 不吸取注釋 don't strip comments
/U 移除預定義宏 remove predefined macro
/D{=|#} 定義宏 define macro
/u 移除所有預定義宏 remove all predefined macros
/E 將預處理定向到標准輸出 preprocess to stdout
/I 添加到包含文件的搜索路徑 add to include search path
/EP 將預處理定向到標准輸出,不要帶行號 preprocess to stdout, no #line
/X 忽略「標准位置」 ignore "standard places"
/P 預處理到文件 preprocess to file

-語言-
/Zi 啟用調試信息 enable debugging information
/Zl 忽略 .OBJ 中的默認庫名 omit default library name in .OBJ
/ZI 啟用調試信息的「編輯並繼續」功能 enable Edit and Continue debug info
/Zg 生成函數原型 generate function prototypes
/Z7 啟用舊式調試信息 enable old-style debug info
/Zs 只進行語法檢查 syntax check only
/Zd 僅要行號調試信息 line number debugging info only
/vd{0|1} 禁用/啟用 vtordisp disable/enable vtordisp
/Zp[n] 在 n 位元組邊界上包裝結構 pack structs on n-byte boundary
/vm 指向成員的指針類型 type of pointers to members
/Za 禁用擴展(暗指 /Op) disable extensions (implies /Op)
/noBool 禁用「bool」關鍵字 disable "bool" keyword
/Ze 啟用擴展(默認) enable extensions (default)

- 雜項 -
/?, /help 列印此幫助消息 print this help message
/c 只編譯,不鏈接 compile only, no link
/W 設置警告等級(默認 n=1) set warning level (default n=1)
/H 最大化外部名稱長度 max external name length
/J 默認 char 類型是 unsigned default char type is unsigned
/nologo 取消顯示版權消息 suppress right message
/WX 將警告視為錯誤 treat warnings as errors
/Tc 將文件編譯為 .c compile file as .c
/Yc[file] 創建 .PCH 文件 create .PCH file
/Tp 將文件編譯為 .cpp compile file as .cpp
/Yd 將調試信息放在每個 .OBJ 中 put debug info in every .OBJ
/TC 將所有文件編譯為 .c compile all files as .c
/TP 將所有文件編譯為 .cpp compile all files as .cpp
/Yu[file] 使用 .PCH 文件 use .PCH file
/V 設置版本字元串 set version string
/YX[file] 自動的 .PCH 文件 automatic .PCH
/w 禁用所有警告 disable all warnings
/Zm 最大內存分配(默認為 %) max memory alloc (% of default)

-鏈接-
/MD 與 MSVCRT.LIB 鏈接 link with MSVCRT.LIB
/MDd 與 MSVCRTD.LIB 調試庫鏈接 link with MSVCRTD.LIB debug lib
/ML 與 LIBC.LIB 鏈接 link with LIBC.LIB
/MLd 與 LIBCD.LIB 調試庫鏈接 link with LIBCD.LIB debug lib
/MT 與 LIBCMT.LIB 鏈接 link with LIBCMT.LIB
/MTd 與 LIBCMTD.LIB 調試庫鏈接 link with LIBCMTD.LIB debug lib
/LD 創建 .DLL Create .DLL
/F 設置堆棧大小 set stack size
/LDd 創建 .DLL 調試庫 Create .DLL debug libary
/link [鏈接器選項和庫] [linker options and libraries]

❻ VS 2010 C++編譯器/鏈接器中新的基於配置的優化選項有哪些

PogoSafeMode關鍵字是一個新的基於配置的優化選項。可以使用PogoSafeMode關鍵字來指定開發者想使用安全模式還是快速模式來優化的應用程序。

❼ Linux 編譯選項

  1. gcc -E source_file.c
    -E,只執行到預編譯。直接輸出預編譯結果。

  2. gcc -S source_file.c
    -S,只執行到源代碼到匯編代碼的轉換,輸出匯編代碼。

  3. gcc -c source_file.c
    -c,只執行到編譯,輸出目標文件。

  4. gcc (-E/S/c/) source_file.c -o output_filename
    -o, 指定輸出文件名,可以配合以上三種標簽使用。
    -o 參數可以被省略。這種情況下編譯器將使用以下默認名稱輸出:
    -E:預編譯結果將被輸出到標准輸出埠(通常是顯示器)
    -S:生成名為source_file.s的匯編代碼
    -c:生成名為source_file.o的目標文件。
    無標簽情況:生成名為a.out的可執行文件。

  5. gcc -g source_file.c
    -g,生成供調試用的可執行文件,可以在gdb中運行。由於文件中包含了調試信息因此運行效率很低,且文件也大不少。
    這里可以用strip命令重新將文件中debug信息刪除。這是會發現生成的文件甚至比正常編譯的輸出更小了,這是因為strip把原先正常編譯中的一些額外信息(如函數名之類)也刪除了。用法為 strip a.out

  6. gcc -s source_file.c
    -s, 直接生成與運用strip同樣效果的可執行文件(刪除了所有符號信息)。

  7. gcc -O source_file.c
    -O(大寫的字母O),編譯器對代碼進行自動優化編譯,輸出效率更高的可執行文件。
    -O 後面還可以跟上數字指定優化級別,如:
    gcc -O2 source_file.c
    數字越大,越加優化。但是通常情況下,自動的東西都不是太聰明,太大的優化級別可能會使生成的文件產生一系列的bug。一般可選擇2;3會有一定風險。

  8. gcc -Wall source_file.c
    -W,在編譯中開啟一些額外的警告(warning)信息。-Wall,將所有的警告信息全開。

  9. gcc source_file.c -L/path/to/lib -lxxx -I/path/to/include
    -l, 指定所使用到的函數庫,本例中鏈接器會嘗試鏈接名為libxxx.a的函數庫。
    -L,指定函數庫所在的文件夾,本例中鏈接器會嘗試搜索/path/to/lib文件夾。
    -I, 指定頭文件所在的文件夾,本例中預編譯器會嘗試搜索/path/to/include文件夾。

❽ 如何設置NDK的編譯選項

1. 概述
首先回顧一下 Android NDK 開發中,Android.mk 和 Application.mk 各自的職責。
Android.mk,負責配置如下內容:
(1) 模塊名(LOCAL_MODULE)
(2) 需要編譯的源文件(LOCAL_SRC_FILES)
(3) 依賴的第三方庫(LOCAL_STATIC_LIBRARIES,LOCAL_SHARED_LIBRARIES)
(4) 編譯/鏈接選項(LOCAL_LDLIBS、LOCAL_CFLAGS)
Application.mk,負責配置如下內容:
(1) 目標平台的ABI類型(默認值:armeabi)(APP_ABI)
(2) Toolchains(默認值:GCC 4.8)
(3) C++標准庫類型(默認值:system)(APP_STL)
(4) release/debug模式(默認值:release)
由此我們可以看到,本文所涉及的編譯選項在Android.mk和Application.mk中均有出現,下面我們將一個個詳細介紹。
2. APP_ABI
ABI全稱是:Application binary interface,即:應用程序二進制介面,它定義了一套規則,允許編譯好的二進制目標代碼在所有兼容該ABI的操作系統和硬體平台中無需改動就能運行。(具體的定義請參考 網路 或者 維基網路 )
由上述定義可以判斷,ABI定義了規則,而具體的實現則是由編譯器、CPU、操作系統共同來完成的。不同的CPU晶元(如:ARM、Intel x86、MIPS)支持不同的ABI架構,常見的ABI類型包括:armeabi,armeabi-v7a,x86,x86_64,mips,mips64,arm64-v8a等。
這就是為什麼我們編譯出來的可以運行於Windows的二進製程序不能運行於Mac OS/Linux/Android平台了,因為CPU晶元和操作系統均不相同,支持的ABI類型也不一樣,因此無法識別對方的二進製程序。
而我們所說的「交叉編譯」的核心原理也跟這些密切相關,交叉編譯,就是使用交叉編譯工具,在一個平台上編譯生成另一個平台上的二進制可執行程序,為什麼可以做到?因為交叉編譯工具實現了另一個平台所定義的ABI規則。我們在Windows/Linux平台使用Android NDK交叉編譯工具來編譯出Android平台的庫也是這個道理。
這里給出最新 Android NDK 所支持的ABI類型及區別:

那麼,如何指定ABI類型呢?在 Application.mk 文件中添加一行即可:
APP_ABI := armeabi-v7a //只編譯armeabi-v7a版本APP_ABI := armeabi armeabi-v7a //同時編譯armeabi,armeabi-v7a版本APP_ABI := all //編譯所有版本
3. LOCAL_LDLIBS
Android NDK 除了提供了Bionic libc庫,還提供了一些其他的庫,可以在 Android.mk 文件中通過如下方式添加依賴:
LOCAL_LDLIBS := -lfoo
其中,如下幾個庫在 Android NDK 編譯時就默認鏈接了,不需要額外添加在 LOCAL_LDLIBS 中:
(1) Bionic libc庫
(2) pthread庫(-lpthread)
(3) math(-lmath)
(4) C++ support library (-lstdc++)
下面我列了一個表,給出了可以添加到「LOCAL_LDLIBS」中的不同版本的Android NDK所支持的庫:

下面是我總結的一些常用的CFLAGS編譯選項:
(1)通用的編譯選項
-O2 編譯優化選項,一般選擇O2,兼顧了優化程度與目標大小
-Wall 打開所有編譯過程中的Warning
-fPIC 編譯位置無關的代碼,一般用於編譯動態庫
-shared 編譯動態庫
-fopenmp 打開多核並行計算,
-Idir 配置頭文件搜索路徑,如果有多個-I選項,則路徑的搜索先後順序是從左到右的,即在前面的路徑會被選搜索
-nostdinc 該選項指示不要標准路徑下的搜索頭文件,而只搜索-I選項指定的路徑和當前路徑。
--sysroot=dir 用dir作為頭文件和庫文件的邏輯根目錄,例如,正常情況下,如果編譯器在/usr/include搜索頭文件,在/usr/lib下搜索庫文件,它將用dir/usr/include和dir/usr/lib替代原來的相應路徑。
-llibrary 查找名為library的庫進行鏈接
-Ldir 增加-l選項指定的庫文件的搜索路徑,即編譯器會到dir路徑下搜索-l指定的庫文件。
-nostdlib 該選項指示鏈接的時候不要使用標准路徑下的庫文件
(2) ARM平台相關的編譯選項
-marm -mthumb 二選一,指定編譯thumb指令集還是arm指令集
-march=name 指定特定的ARM架構,常用的包括:-march=armv6, -march=armv7-a
-mfpu=name 給出目標平台的浮點運算處理器類型,常用的包括:-mfpu=neon,-mfpu=vfpv3-d16
-mfloat-abi=name 給出目標平台的浮點預算ABI,支持的參數包括:「soft」, 「softfp」 and 「hard」

❾ 以下哪個編譯鏈接選項對程序的啟動速度影響大

一、選擇題((1)—(40)每題1分,(41)—(50)每題2分,共60分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項塗寫在答題卡相應位置上,答在試卷上不得分。
??
(1) 在32位計算機中,一個字長所佔的位元組數為( )。
A) 1
B) 2
C) 4
D) 8
??
(2) 與十進制數511等值的十六進制數為( )。
A) 1FF
B) 2FF
C) 1FE
D) 2FE
??
(3) 能將高級語言編寫的源程序轉換成目標程序的是( )。
A) 編程程序
B) 編譯程序
C) 解釋程序
D) 鏈接程序
??
(4) 在計算機系統中,存儲一個漢字的國標碼所需要的位元組數為( )。
A) 1
B) 2
C) 3
D) 4
??
(5) 下列帶有通配符的文件名中,能表示文件ABC.TXT的是( )。
A) *BC.?
B) A?.*
C) ?BC.*
D) ?.?
??
(6) 在多媒體計算機系統中,不能用以存儲多媒體信息的是( )。
A) 光纜
B) 軟盤
C) 硬碟
D) 光碟
??
(7) DOS命令「COPY/?」的功能是( )。
A) 將當前盤當前目錄中的所有文件復制到當前盤的根目錄下
B) 將當前盤當前目錄中所有以單個字元命名的文件復制到當前盤的根目錄下
C) 以提示方式復制文件
D) 顯示COPY命令的幫助信息
??
(8) 在Windows環境下,若要將當前活動窗口存入剪貼板,則可以按( )。
A) Ctrl+PrintScreen鍵
B) Ctrl+PrintScreen鍵
C) Shift+PrintScreen鍵
D) PrintScreen鍵
??
(9) 在Windows環境下,單擊當前應用程序窗口中的「關閉」按鈕,其功能是( )。
A) 將當前應用程序轉為後台運行
B) 退出Windows後再關機
C) 退出Windows後重新啟動計算機
D) 終止當前應用程序的運行
??
(10) 在Windows環境中,粘貼按鈕是( )。
A) ctrl+A
B) ctrl+C
C) ctrl+X
D) ctrl+V
??
(11) 以下敘述中正確的是( )。
A) 構成C程序的基本單位是函數
B) 可以在一個函數中定義另一個函數
C) main()函數必須放在其它函數之前
D) 所有被調用的函數一定要在調用之前進行定義
??
(12) 以下選項中合法的實型常數是( )。
A) 5E2.0
B) E-3
C) .2E0
D) 1.3E
??
(13) 以下選項中合法的用戶標識符是( )。
A) long
B) _2Test
C) 3Dmax
D) A.dat
??
(14) 已知大寫字母A的ASCII碼值是65,小寫字母a的ASCII碼是97,則用八進製表示的字元常量『\101』是( )。
A) 字元A
B)字元a
C)字元e
D)非法的常量
??
(15) 以下非法的賦值語句是( )。
A) n=(i=2,++i);
B)j++;
C) ++(i+1);
D)x=j>0;
??
(16) 設a和b均為double型變數,且a=5.5、b=2.5,則表達式(int)a+b/b的值是( )。
A)6.500000
B)6
C) 5.500000
D) 6.000000
??
(17) 已知i、j、k為int型變數,若從鍵盤輸入:1,2,3,使i的值為1、j的值為2、k的值為3,以下選項中正確的輸入語句是( )。
A) scanf(「%2d%2d%2d」,&i,&j,&k);
B) scanf(「%d %d %d」,&i,&j,&k);
C) scanf(「%d,%d,%d」,&i,&j,&k);
D) scanf(「i=%d,j=%d,k=%d」,&i,&j,&k);
??
(18) 與數學式子 對應的C語言表達式是( )。
A) 3*x^n(2*x-1)
B) 3*x**n(2*x-1)
C) 3*pow(x,n)*(1/(2*x-1))
D) 3*pow(n,x)/(2*x-1)
??
(19) 設有定義:long x=-123456L;,則以下能夠正確輸出變數x值的語句是( )。
A)printf(「x=%d\n」,x);
B) printf(「x=%1d\n」,x);
C)printf(「x=%8dL\n」,x);
D)printf(「x=%LD\n」,x);
??
(20) 若有以下程序:
??main()
??{ int k=2,i=2,m;
??m=(k+=i*=k);printf(「%d,%d\n」,m,i);
??}
??執行後的輸出結果是( )。
A) 8,6
B) 8,3
C) 6,4
D) 7,4
??
(21) 已有定義:int x=3,y=4,z=5;,則表達式!(x+y)+z-1 && y+z/2的值是( )。
A) 6
B) 0
C) 2
D) 1
??
(22) 有一函數, ,以下程序段中不能根據x值正確計算出y值的是( )。
A) if(x>0) y=1; B) y=0;
?? else if(x==0) y=0; if(x>0) y=1;
?? else y=-1; else if(x<0) y=-1;
C)y=0; D)if(x>=0)
?? if(x>=0); if(x>0) y=1;
?? if(x>0) y=1 ; else y=0;
?? else y=-1; else y=-1;
??
(23) 以下選項中,與k=n++完全等價的表達式是( )。
A) k=n,n=n+1
B) n=n+1,k=n
C) k=++n
D) k+=n+1
??
(24) 以下程序的功能是:按順序讀入10名學生4門課程的成績,計算出每位學生的平均分並輸出,程序如下:
??main()
??{ int n,k;
??float score ,sum,ave;
??sum=0.0;
??for(n=1;n<=10;n++)
??{ for(k=1;k<=4;k++)
??{ scanf(「%f」,&score); sum+=score;}
??ave=sum/4.0;
??printf(「NO%d:%f\n」,n,ave);
?? }
??}
??上述程序運行後結果不正確,調試中發現有一條語句出現在程序中的位置不正確。這條語句是( )。
A) sum=0.0;
B) sum+=score;
C) ave=sun/4.0;
D) printf(「NO%d:%f\n」,n,ave);
??
(25) 有以下程序段
??int n=0,p;
??do{scanf(「%d」,&p);n++;}while(p!=12345 &&n<3);
??此處do—while循環的結束條件是( )。
A) P的值不等於12345並且n的值小於3
B) P的值等於12345並且n的值大於等於3
C) P的值不等於12345或者n的值小於3
D) P的值等於12345或者n的值大於等於3
??
(26) 有以下程序
??main()
??{ int a=15,b=21,m=0;
??switch(a%3)
??{ case 0:m++;break;
??case 1:m++;
?? switch(b%2)
??{ default:m++;
??case 0:m++;break;
??}
??}
??printf(「%d\n」,m);
??}
?? 程序運行後的輸出結果是( )。
A) 1
B) 2
C) 3
D) 4
??
(27) C語言中,函數值類型的定義可以預設,此時函數值的隱含類型是( )。
A) void
B) int
C) float
D) double
??
(28) 若有說明:int n=2,*p=&n,*q=p;,則以下非法的賦值語句是( )。
A) p=q;
B) *p=*q;
C) n=*q;
D) p=n;
??
(29) 有以下程序
??float fun(int x,int y)
??{ return(x+y); }
??main()
??{ int a=2,b=5,c=8;
??printf(「%3.0f\n」,fun(int)fun(a+c,b),a-c));
??}
??程序運行後的輸出結果是( )。
A) 編譯出錯
B) 9
C) 21
D) 9.0
??
(30) 有以下程序
??void fun(char *c,int d)
??{ *c=*c+1;d=d+1;
??printf(「%c,%c,」,*c,d);
??}
??main()
??{ char a=』A』,b=』a』;
??fun(&b,a); printf(「%c,%c\n」,a,b);
??}
??程序運行後的輸出結果是( )。
A)B,a,B,a
B) a,B,a,B
C) A,b,A,b
D) b,B,A,b
??
(31) 以下程序中函數sort的功能是對a所指數組中的數據進行由大到小的排序
??void sort(int a[],int n)
{ int i,j,t;
for(i=0;i
for(j=i+1,j
if(a[i]
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=o;i<10;i++) print(「%d,」,aa[i]);
printf(『\n」);
}
??程序運行後的輸出結果是( )。
A)1,2,3,4,5,6,7,8,9,10
B) 10,9,8,7,6,5,4,3,2,1,
C) 1,2,3,8,7.6.5.4.9,10
D) 1,2,10,9,8,7,6,5,4,3
??
(32) 有以下程序
??int f(int n)
??{ if (n==1) return 1;
??else return f(n-1)+1;
??}
??main()
??{ int i,j=0;
??for(i=i;i<3;i++) j+=f(i);
??printf(「%d\n」,j);
??}
??程序運行後的輸出結果是( )。
A) 4
B) 3
C) 2
D) 1
??
(33) 有以下程序
??main()
??{ char a[ ]={『a』,『b』,『c』,『d』, 『e』, 『f』, 『g』,『h』,『\0』}; int i,j;
??i=sizeof(a); j=strlen(a);
??printf(「%d,%d\b」i,j);
??}
??程序運行後的輸出結果是( )。
A)9,9
B)8,9
C)1,8
D)9,8
??
(34) 以下程序中函數reverse的功能是將a所指數組中的內容進行逆置。
??void reverse(int a[ ],int n)
??{ int i,t;
??for(i=0;i??{ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}
??}
??main()
??{ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
?? reverse(b,8);
?? for(i=6;i<10;i++) s+=b[i];
?? printf(「%d\n」,s);
??}
??程序運行後的輸出結果是( )。
A) 22
B) 10
C) 34
D) 30
??
(35) 有以下程序
??main()
??{ int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
??int i,s=0
??for(i=0;i<4;i++) s+=aa[i][1];
??printf(「%d\n」,s);
??}
??程序運行後的輸出結果是( )。
A) 11
B) 19
C) 13
D) 20
??
(36) 有以下程序
??#include
??main()
??{ char *p=「abcde\Ofghjik\0」;
??printf(「%d\n」,strlen(p));
??}
??程序運行後的輸出結果是( )。
A) 12
B) 15
C) 6
D) 5
??
(37) 程序中頭文件typel.h 的內容是:
??#define N 5
??#define M1 N*3
??程序如下:
??#define 「type1.h」
??#define M2 N*2
??main()
??{ int i;
??i=M1+M2; printf(「%d\n」,i);
??}
??程序編譯後運行的輸出結果是:( )。
A) 10
B) 20
C) 25
D) 30
??
(38) 有以下程序
??#include
??main()
??{ FILE *fp; int i=20,j=30,k,n;
??fp=fopen(「d1.dat」「w」);
??fprintf(fp,「%d\n」,i);fprintf(fp,「%d\n」j);
??fclose(fp);
??fp=fopen(「d1.dat」, 「r」);
??fp=fscanf(fp,「%d%d」,&k,&n); printf(「%d%d\n」,k,n);
??fclose(fp);
??}
??程序運行後的輸出結果是( )。
A) 20 30
B) 20 50
C) 30 50
D) 30 20
??
(39) 以下敘述中錯誤的是( )。
A) 二進制文件打開後可以先讀文件的末尾,而順序文件不可以
B) 在程序結束時,應當用fclose函數關閉已打開的文件
C) 在利用fread函數從二進制文件中讀數據時,可以用數組名給數組中所有元素讀入數據
D) 不可以用FILE定義指向二進制文件的文件指針

(40) 有以下程序
??#include
??main(int argc,char *argv[])
??{ int i,len=0;
??for(i=1;i??printf(「%d\n」,len);
??}
??程序編譯連接後生成的可執行文件是ex1.exe,若運行時輸入帶參數的命令行是:
??ex1 abcd efg 10
??則運行的結果是:( )。
A) 22
B) 17
C) 12
D) 9
??
(41) 有以下程序
??int fa(int x)
??{ return x*x; }
??int fb(int x)
??{ return x*x*x; }
??int f(int (*f1)(),int (*f2)(),int x)
??{ return f2(x)-f1(x); }
??main()
??{ int i;
??i=f(fa,fb,2); printf(「%d\n」,i);
??}
??程序運行後的輸出結果是( )。
A) -4
B) 1
C) 4
D) 8
??
(42) 有以下程序
??int a=3;
??main()
??{ int s=0;
??{ int a=5; s+=a++; }
??s+=a++;printf(「%d\n」,s);
??}
??程序運行後的輸出結果是( )。
A) 8
B) 10
C) 7
D) 11
??
(43) 有以下程序
??void ss(char *s,char t)
??{ while(*s)
??{ if(*s==t) *s=t-『a』+』A』;
?? s++;
??}
??}
??main()
??{ char str1[100]=「abcddfefdbd」,c=』d』;
??ss(str1,c); printf(「%s\n」,str1);
??}
??程序運行後的輸出結果是( )。
A) ABCDDEFEDBD
B) abcDDfefDbD
C) abcAAfefAbA
D) Abcddfefdbd
??
(44) 有以下程序
??struct STU
??{ char num[10]; float score[3]; };
??main()
??{ struct stu s[3]={{「20021」,90,95,85},
??{「20022」,95,80,75},
??{「20023」,100,95,90}},*p=s;
??int i; float sum=0;
??for(i=0;i<3,i++)
??sum=sum+p->score[i];
??printf(「%6.2f\n」,sum);
??}
??程序運行後的輸出結果是( )。
A) 260.00
B) 270.00
C) 280.00
D) 285.00
??
(45) 設有如下定義:
??struck sk
??{ int a;
??float b;
??}data;
??int *p;
??若要使P指向data中的a域,正確的賦值語句是( )。
A) p=&a;
B) p=data.a;
C) p=&data.a;
D) *p=data.a;
??
(46) 有以下程序
??#include
??struct NODE
??{ int num; struct NODE *next; };
??main()
??{ struct NODE *p,*Q,*R;
??p=(struct NODE*)malloc(sizeof(struct NODE));
??q=(struct NODE*)malloc(sizeof(struct NODE));
??r=(struct NODE*)malloc(sizeof(struct NODE));
??p->num=10; q->num=20; r->num=30;
??p->next=q;q->next=r;
??printf(「%d\n」,p->num+q->next->num);
??}
??程序運行後的輸出結果是( )。
A) 10
B) 20
C) 30
D) 40
??
(47) 若有以下說明和定義
??typedef int *INTEGER;
??INTEGER p,*q;
??以下敘述正確的是( )。
A) P是int型變數
B) p是基類型為int的指針變數
C) q是基類型為int的指針變數
D) 程序中可用INTEGER代替int類型名
??
(48) 有以下程序
??main()
??{ unsigned char a,b,c;
??a=0x3; b=a|0x8; c=b<<1;
??printf(「%d%d\n」,b,c);
??}
??程序運行後的輸出結果是( )。
A) –11 12
B) –6 –13
C) 12 24
D) 11 22
??
(49) 有以下程序
??#include
??main()
??{ char *p,*q;
??p=(char*)malloc(sizeof(char)*20); q=p;
??scanf(「%s%s」,p,q); printf(「%s%s\n」,p,q);
??}
??若從鍵盤輸入:abc def,則輸出結果是:( )。
A) def def
B) abc def
C) abc d
D) d d
??
(50) 以下程序中函數f的功能是將n個字元串按由大到小的順序進行排序。
??#include
??void f(char p[][10],int n)
??{ char t[20]; int i,j;
??for(i=0;i??for(j=i+1;j??if(strcmp(p[i],p[j])<0)
?? { strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}
??}
??main()
??{ char p[][10]={「abc」,「aabdfg」,「abbd」,「dcdbe」,「cd」};int i;
??f(p,5); printf(「%d\n」,strlen(p[0]));
??}
??程序運行後的輸出結果是( )。
A) 6
B) 4
C) 5
D) 3
??
二、填空題(每空2分,共40分)
請將答案分別寫在答題卡中序號為【1】至【20】的橫線上,答在試卷上不得分。
??
1、計算機軟體分為系統軟體和應用軟體,操作系統屬於 [1] 。
??
2、在DOS環境下,代表鍵盤和顯示器的設備文件名為 [2] 。
??
3、支持Internet基本服務的協議是 [3] 。
??
4、從Windows環境進入MS-DOS方式後,返回Windows環境的DOS命令為 [4] 。
??
5、某微型機的運算速度為2MIPS,則該微型機每秒執行 [5] 條指令。
??
6、設有定義:int n,*k=&n;以下語句將利用指針變數k讀寫變數n中的內容,請將語句補充完整。
??scanf(「%d, 」 [6] );
??printf(「%d\n」, [7] 。);
??
7、以下程序運行後的輸出結果是 [8] 。
?? main()
??{ int x=10,y=20,t=0;
??if(x==y)t=x;x=y;y=t;
??printf(「%d,%d \n」,x,y);
??}
??
8、以下程序運行後的輸出結果是 [9] 。
??main()
??{ int x=15;
??while(x>10 && x<50)
??{ x++;
??if(x/3){x++;break;}
??else continue;
??}
??printf(「%d\n」,x);
??}
??

9、有以下程序:
??#include
??main()
??{ char c;
??while((c=getchar( ))!=』?』) putchar(--c);
??}
??程序運行時,如果從鍵盤輸入:Y?N?,則輸出結果為 [10] 。
??
10、以下程序運行後的輸出結果是 [11] 。
??void fun(int x,int y)
??{ x=x+y;y=x-y;x=x-y;
??printf(「%d,%d,」,x,y); }
??main()
??{ int x=2,y=3;
??fun(x,y);
??printf(「%d,%d\n」,x,y);
??}
??
11、以下函數的功能是計算s=1+ + +……+ ,請填空。
??double fun(int n)
??{ double s=0.0,fac=1.0; int i;
??for(i=1,i<=n;i++)
??{ fac=fac [12] ;
??s=s+fac;
??}
??return s;
??}
??

12 fun函數的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大的數,再求這N個最大值中的最小的那個數作為函數值返回。請填空。
??#include
??#define N 100
??int fun(int(*a)[N])
??{ int row,col,max,min;
??for(row=0;row??{ for(max=a[row][0],col=1;col??if( [13] )max=a[row][col];
?? if( row==0)min=max;
?? else if( [14] )min=max;
?? }
??return min;
??}
??
13、函數sstrcmp()的功能是對兩個字元串進行比較。當s所指字元串和t所指字元串相等時,返回值為0;當s所指字元串大於t所指字元串時,返回值大於0;當s所指字元串小於t所指字元串時,返回值小於0(功能等同於庫函數strcmp())。請填空。
??#include
??int sstrcmp(char *s,char *t)
??{ while(*s&&*t&& *s== [15] )
??{ s++;t++;}
??return [16] ;
??}
??
14、下面程序的運行結果是 [17] 。
??#define N 10
??#define s(x) x*x
??#define f(x) (x*x)
??main()
??{ int i1,i2;
??i1=1000/s(N); i2=1000/f(N);
??printf(「%d %d\n」,i1,i2);
??}
??
15、下面程序的運行結果是: [18] 。
??void swap(int *a,int *b)
??{ int *t;
??t=a; a=b; b=t;
??}
??main()
??{ int x=3,y=5,*p=&x,*q=&y;
??swap(p,q);
??printf(「%d%d\n」,*p,*q);
??}
??
16、下面程序的運行結果是: [19] 。
??typedef union student
??{ char name[10];
??long sno;
??char sex;
??float score[4];
??}STU;
??main()
??{ STU a[5];
??printf(「%d\n」,sizeof(a));
??}
??
(17) 函數sstrcmp()的功能是對兩個字元串進行比較。當s 所指字元串和t所指字元相等時,返回值為0;當s所指字元串大於t所指字元串時,返回值大於0;當s所指字元串小於t所指字元串時,返回值小於0(功能等同於庫函數strcmp())。請填空。
#include
int sstrcmp(char *s,char *t)
{while(*s&&*t&&*s==【19】)
{s++;t++; }
return 【20】;
}

❿ gcc 編譯選項 -pthread -lpthread 異同

-pthread 比 -lpthread 多了一個宏定義 -D_REENTRANT

對於多線程程序來說這個宏非常重要,這個宏會讓libc和一些其他庫,自動選擇線程安全的函數實現(很多函數有線程安全和不安全的2種實現版本)

所以建議使用-pthread 或者加上 -D_REENTRANT.

熱點內容
androidsdk包含 發布:2024-05-04 00:45:54 瀏覽:206
android拷貝文件 發布:2024-05-04 00:38:28 瀏覽:775
存儲冗餘比 發布:2024-05-04 00:12:58 瀏覽:403
oracle資料庫存儲原理 發布:2024-05-04 00:10:40 瀏覽:522
未拆封玩客雲3怎麼搭建伺服器 發布:2024-05-04 00:06:11 瀏覽:797
徹底刪除編譯安裝的文件 發布:2024-05-04 00:05:33 瀏覽:55
編程機構數量 發布:2024-05-03 23:49:25 瀏覽:955
python源碼編譯安裝 發布:2024-05-03 23:48:16 瀏覽:108
android手機市場 發布:2024-05-03 23:47:04 瀏覽:499
如何配置vlan並添加埠 發布:2024-05-03 23:37:53 瀏覽:726