程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 特殊的attribute機制

特殊的attribute機制

編輯:關於C語言

__attribute__機制是GNU C的一大特色,可以用來設置函數,變量和數據類型的屬性,下面對工作中正好用到的兩個屬性做下簡單介紹。

這個屬性指定函數在main函數執行之前執行

  RunBeforeMain( RunBeforeMain(% main(% 

輸出順序如下:

RunbeforeMain

main

 

2. weak, alias

weak: weak symbol. 若存在兩個相同的全局符號時,會引發重定義錯誤. 如果使用weak attribute,則當weak symbol和non-weak symbol同時存在的時候,linker會使用non-weak symbol.若只有weak symbol存在的時候則只使用weak symbol.

alias: 設置函數的別名,如

 example() __attribute__((alias()));

將example函數設為__example的別名

這兩個屬性結合起來使用可以在non-weak symbol沒有聲明的情況下仍然編譯執行成功。

//strong.c

#include <stdio.h>

//weak.c

#include <stdio.h>

 StrongFun()__attribute__((weak, alias( main( argc,  ** 

單獨鏈接時,

gcc -o weak weak.o

./weak

輸出結果:

weak.c:WeakFun

同時鏈接時,

gcc -o strong weak.o strong.o

./strong

輸出結果

strong.c:StrongFun

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved