當前位置:首頁 » 編程語言 » typeofc語言

typeofc語言

發布時間: 2022-10-28 18:07:27

『壹』 c語言define的一個函數看不懂。。有沒有大神幫幫忙。非常感謝!!

C#的? typeof應該是取參數的類型,然後 定義了與入參同類型的__x和__d

( ( (typeof(x))-1) > 0 || ( (typeof(divisor))-1) > 0 || (__x) > 0) ?
(((__x) + ((__d) / 2)) / (__d)) :
(((__x) - ((__d) / 2)) / (__d));}
這里是簡寫 ,換成if語句就是
if( ((typeof(x))-1) > 0 || ((typeof(divisor))-1) > 0 || (__x) > 0 )
(((__x) + ((__d) / 2)) / (__d)) :
else
(((__x) - ((__d) / 2)) / (__d));

『貳』 c語言中container_of, typeof, offsetof這些是哪個標準的

1. container_of是linux內核中實現的宏,不是C語言的標准函數。不能跨平台。

#define container_of(ptr, type, member) ({

const typeof( ((type *)0)->member ) *__mptr = (ptr);

(type *)( (char *)__mptr - offsetof(type,member) );})

2. typeof是GNU C的擴展,不是ISO標准中的函數。用gcc編譯可以跨平台。

3. offsetof是C語言標准庫中的宏,定義在頭文件stddef.h中。可以跨平台。

『叄』 C#中Typeof是干什麼的

MSDN上typeof的說明:「用於獲取類型的System.Type對象。」

typeof是操作符(一些書叫運算符),這點很重要。在C#中所有的操作符最後都變為函數了。這也就不奇怪為什麼一個看似函數的東西卻被稱為操作符的原因了。

注意返回的是Type對象,內含有許多信息。如類型的信息。方法有哪些,屬性有哪些,欄位有哪些。如果用其它的技術,如反射、序列化什麼的,配合使用的話會更方便。


(3)typeofc語言擴展閱讀

typeof(x)中的x,必須是具體的類名、類型名稱等,不可以是變數名稱。

GetType()方法繼承於Object(C#中所有類的基類都是object類。基類是相對於派生類而言的,比方說:如果B類繼承自A類,則A就是B的基類。),所以C#中任何對象都具有GetType()方法,它的作用和typeof()相同,返回Type類型的當前對象的類型。

舉例說明:

有這樣一個變數i: Int32 i = new Int32();

i.GetType()返回值是Int32的類型,但是無法使用typeof(i),因為i是一個變數。如果要使用typeof(),則只能:typeof(Int32),返回的同樣是Int32的類型。

Typeof()是運算符,用於獲取類型的System.Type對象。而GetType是方法,獲取當前實例的類型;Typeof()的參數只能是int,string,String,自定義類型,且不能是實例;

『肆』 各種C語言標准與區別

GNU C 允許零長度數組
GNU C 允許定義長度為0的數組,可能很多人會問長度為0的數組有什麼用啊。其實我們可以定義一個長度為0的數組,那麼這個數組是不佔用內存空間的,但是 我們可以通過這個數組來訪問數組後面的數據,比如一個結構體:
struct data_pra
{
char name;
char num[0];
char year;
charr month;
...
};
struct data_pra data;
就可以通過調用data.num[0]獲得year數據,data.num[1]來獲得month的數據。如果他們的類型相同,並且取值范圍相同,我們要對他們進行范圍檢查,這是我們就可以通過for循環來實現,而不需要獲取每個數據的值,再進行取值范圍判斷了。
GNU支持case 取值范圍用法
GNU C 支持case x…y 語法,區間[x,y]的數都會滿足這個case的條件,我們在不考慮if判斷的情況下,如整數a的取值范圍為0-5,當0<3時執行fun1函數,大於等於3時執行fun2();則GNU C可以通過以下代碼實現:
switch(a)
{
case 0..: 2:fun1();
break;
case 3…5: fun2();
break;
}
而不是
switch(a)
{
case 0
case 1;
case 2:
fun1();
break;
case 3:
case 4;
case 5:
fun2();
break;
}
如果條件越多,這種實現方案就越簡單方便。也便於其他人員閱讀代碼。
語句表達式
GNU C把包含在括弧里的復合語句看做是一個表達式,稱為語句表達式,它可以出現在任何允許表達式的地方。可以在語句表達式中使用原本只能在復合語句中使用的循環變數、局部變數等,例如:
#define min_t(type,x,y) ({type __x=(x); type __y=(y);__x<__y?__x:__y})
int ia,ib,mini;
mini=min_t(int,ia,ib);
這樣,因為重新定義了__x和__y這兩個局部變數,所以上述方法定義的宏將不會有副作用。在標准C中,對應的宏通常會有副作用
typeof關鍵字
typeof(x) 可以獲得x的類型,因此,可以藉助typeof重新定義上一條提到的min_t這個宏
#define min(x,y) /
({ /
const typeof(x) _x=(x);/
const typeof(y) _y=(y);/
(void) (&_x==&_y);/
_x<_y ? _x: _y ; })
不需要像上一條時那樣傳一個type進去,因為通過typeof(x)可以得到type。
代碼 (void) (&_x==&_y);的作用是檢查_x和_y的類型是否一致。
可變參數的宏
標准C只支持可變參數的函數,意味著函數的參數可以是不固定的
例如printf()函數的原型是
int printf(const char *format [,argument]…)
而在GNU C中,宏也可以接受可變數目的參數,例如
#define pr_debug(fmt,arg…) printk(fmt,##arg)
這里arg表示其餘的參數可以是零個或多個,這些參數以及參數之間的逗號構成arg的值,
在宏擴展時替換arg ,例如
pr_debug(「%s:%d」,filename,line);
被擴展為
printk(「%s:%d」,filename,line);
使用##的原因是為了處理arg不代表任何參數的情況,這時候,前面的逗號就變得多餘了。
使用##之後,GNU C預處理器會丟棄前面的逗號
pr_debug(「success!/n」) 會被正確擴展為 printk(「success!/n」)
而不是 printk(「success!/n」,);

『伍』 測試數據類型函數typeof( )的用法

typeof關鍵字是C語言中的一個新擴展。只要可以接受typedef名稱,Sun Studio C 編譯器就可以接受帶有typeof的結構,包括以下語法類別: 聲明 函數聲明符中的參數類型鏈表和返回類型 類型定義 類型操作符s sizeof操作符 復合文字 typeof實參 編譯器接受帶雙下劃線的關鍵字:__typeof和__typeof__。本文中的例子並沒有遵循使用雙下劃線的慣例。從語句構成上看,typeof關鍵字後帶圓括弧,其中包含類型或表達式的名稱。這類似於sizeof關鍵字接受的操作數(與sizeof不同的是,位欄位允許作為typeof實參,並被解釋為相應的整數類型)。從語義上看,typeof 關鍵字將用做類型名(typedef名稱)並指定類型。 使用typeof的聲明示例 下面是兩個等效聲明,用於聲明int類型的變數a。 typeof(int) a; /* Specifies variable a which is of the type int */ typeof('b') a; /* The same. typeof argument is an expression consisting of character constant which has the type int */以下示例用於聲明指針和數組。為了進行對比,還給出了不帶typeof的等效聲明。 typeof(int *) p1, p2; /* Declares two int pointers p1, p2 */int *p1, *p2;typeof(int) * p3, p4;/* Declares int pointer p3 and int p4 */int * p3, p4;typeof(int [10]) a1, a2;/* Declares two arrays of integers */int a1[10], a2[10];如果將typeof用於表達式,則該表達式不會執行。只會得到該表達式的類型。以下示例聲明了int類型的var變數,因為表達式foo()是int類型的。由於表達式不會被執行,所以不會調用foo函數。 extern int foo();typeof(foo()) var;使用typeof的聲明限制 請注意,typeof構造中的類型名不能包含存儲類說明符,如extern或static。不過允許包含類型限定符,如const或volatile。例如,下列代碼是無效的,因為它在typeof構造中聲明了extern: typeof(extern int) a;下列代碼使用外部鏈接來聲明標識符b是有效的,表示一個int類型的對象。下一個聲明也是有效的,它聲明了一個使用const限定符的char類型指針,表示指針p不能被修改。 extern typeof(int) b;typeof(char * const) p = "a";在宏聲明中使用typeof typeof構造的主要應用是用在宏定義中。可以使用typeof關鍵字來引用宏參數的類型。因此,在沒有將類型名明確指定為宏實參的情況下,構造帶有所需類型的對象是可能的。

『陸』 typeof是什麼意思

typeof一般在程序中有運用。
typeof關鍵字是C語言中的一個新擴展,這個特性在linux內核中應用非常廣泛。
typeof的參數可以是兩種形式:表達式或類型。

『柒』 C語言typeof用法報錯,求指導

Work.Wells 是個 PWellList 類型,
根據:typedef TWellList* PWellList;
轉換下,那就是:TWellList * 類型,即 TWellList 的指針。
就是說,*(TWork.Work) 才是 TWellList ,
所以, (*(TWork.Work))[1] == TWellList[1] ==(struct TWellData * ).

『捌』 C語言 定義宏 求兩個數的最大值

#include <stdio.h>
#define max(a,b) a>b?a:b

void main()
{
int i,j;

scanf("%d%d",&i,&j);
printf("%d\n",max(i,j));

}

『玖』 如何查看C語言數據類型佔用位元組大小

c語言有個操作符叫typeof,可以取得類型的大小

熱點內容
比較便宜的雲伺服器 發布:2025-07-13 18:29:59 瀏覽:406
切換ftp 發布:2025-07-13 18:29:07 瀏覽:738
銳龍哪個配置最高畫質 發布:2025-07-13 18:22:34 瀏覽:196
壓縮機工作原理圖 發布:2025-07-13 18:10:15 瀏覽:39
黑暗追求者安卓怎麼聯機 發布:2025-07-13 18:10:07 瀏覽:617
北大保安自學編程 發布:2025-07-13 18:09:58 瀏覽:858
java遞歸排列 發布:2025-07-13 18:02:43 瀏覽:473
輕量雲伺服器如何換成d盤 發布:2025-07-13 17:58:45 瀏覽:931
重置騰訊雲伺服器時間 發布:2025-07-13 17:54:55 瀏覽:326
aes256java加密 發布:2025-07-13 17:54:46 瀏覽:710