-qnullterm

種類

語言元素控制項

用途

將空值字元附加至作為虛擬引數傳遞的每一個字元常數表示式,讓將字串傳遞至 C 函數更方便。

此選項可讓您將字串傳遞至 C 函數,而無需將空值字元新增至每一個字串引數。

語法

讀取語法圖跳過視覺化語法圖 -q nonulltermnullterm

@PROCESS:

@PROCESS NULLTERM | NONULLTERM

預設值

-qnonullterm

用法

此選項會影響由下列任何物件組成的引數:
  • 基本字元常數
  • 多個字元常數的連結
  • 字元類型的已命名常數
  • Hollerith 常數
  • 介面區塊可用時的二進位、八進位或十六進位無類型常數
  • 完全由這些物件組成的任何字元表示式。

如果本質函數的引數是 常數表示式,則 CHARACHAR 本質函數的結果值也會新增空值字元。

規則

這個選項不會變更虛擬引數的長度,這是由在 XL Fortran 呼叫慣例中所傳遞的額外長度引數所定義。

限制

此選項會影響隨或不隨 %REF 內建函數一起傳遞的那些引數,但不會影響依值傳遞的那些引數。 此選項不會影響輸入及輸出陳述式中的字元表示式。

範例

以下是對相同 C 函數的兩個呼叫; 一個具有,另一個沒有選項:
      @PROCESS NONULLTERM
      SUBROUTINE CALL_C_1
        CHARACTER*9, PARAMETER :: HOME = "/home/luc"
! Call the libc routine mkdir() to create some directories.
        CALL mkdir ("/home/luc/testfiles\0", %val(448))
! Call the libc routine unlink() to remove a file in the home directory.
        CALL unlink (HOME // "/.hushlogin" // CHAR(0))
      END SUBROUTINE

      @PROCESS NULLTERM
      SUBROUTINE CALL_C_2
        CHARACTER*9, PARAMETER :: HOME = "/home/luc"
! With the option, there is no need to worry about the trailing null
! for each string argument.
        CALL mkdir ("/home/luc/testfiles", %val(448))
        CALL unlink (HOME // "/.hushlogin")
      END SUBROUTINE
!

相關資訊

請參閱 在語言之間傳遞字元類型