簡體   English   中英

將變量類型作為 function 參數傳遞

[英]Passing variable type as function parameter

是否可以將變量類型作為 function 參數的一部分傳遞,例如:

void foo(varType type)
{
  // Cast to global static
  unsigned char bar;
  bar = ((type *)(&static_array))->member;
}

我記得它與 GCC 的typeof和使用宏有關嗎?

您可以為所有不同的類型創建一個枚舉,並使用開關進行取消引用:

typedef enum {
    CHAR,
    INT,
    FLOAT,
    DOUBLE
} TYPE;

void foo(TYPE t, void* x){
    switch(t){
        case CHAR:
            (char*)x;
            break;
        case INT:
            (int*)x;
            break;
         ...
    }
}

對於 function,您不能這樣做,因為它需要知道 arguments 的類型(以及 function 使用的任何其他符號)來生成工作機器代碼。 你可以試試這樣的宏:

#define foo(type_t) ({ \
    unsigned char bar; \
    bar = ((type_t*)(&static_array))->member; \
    ... \
    })

嗯,當然可以 只需使用這樣的宏:

#include <stdio.h>
#define swap(type, foo, bar) ({type tmp; tmp=foo; foo=bar; bar=tmp;})

int main() {
  int a=3, b=0;
  swap(int, a, b); // 👈 check it out!

  printf("a=%d, b=%d \n", a, b); // a=0, b=3
  return 0;
}

鑒於 C 是一種靜態類型語言,我看不出在一般情況下如何做到這一點。

編譯器需要在編譯時知道type *的類型,以便能夠生成對->member的引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM