簡體   English   中英

如何使用#ifdef進行數據類型切換

[英]How to use #ifdef for data type switching

我正在使用Visual Studio C ++。 我希望能夠在double和long long之間切換。 如何在以下程序中使用#ifdef? 我想使用更簡單的解決方案來處理多個printf的情況。

//#define TYPE_SWITCH
#ifdef TYPE_SWITCH
      typedef double myType;
#else
      typedef long long myType;
#end

.
.
.
int main()
{
     myType a;
     #ifdef TYPE_SWITCH
        printf ("my value is %lf",a);      // I have many printf or scanf and I want to use a simple macro here
     #else
        printf ("your value is %l",a/10);      // I have many printf or scanf and I want to use a simple macro here
     #endif

}

您可以使用類似這樣的方法:

//#define TYPE_SWITCH
#ifdef TYPE_SWITCH
      typedef double myType;
      #def PATTERN_MY_TYPE "%lf"
      #def MODIFICATOR(a) (a)
#else
      typedef long long myType;
      #def PATTERN_MY_TYPE "%l"
      #def MODIFICATOR(a) (a/10)
#end
#def PATTERN_INT "%d"

//...

int main() {
     myType a;
     printf(PATTERN_MY_TYPE ", " PATTERN_INT, MODIFICATOR(a), 42);
}

編譯器可以在編譯時連接字符串,因此您可以使用"foo" "bar"創建與定義相同的字符串"foobar" "foo" PATTERN_INT "bar"將產生"foo%dbar"

暫無
暫無

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

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