簡體   English   中英

預處理程序指令“使用”

[英]Preprocessor Directive “Using”

從我以前學習C的知識中,我知道像#include#include #define這樣的預處理器指令不是語句,這就是名稱所暗示的原因,它是程序在編譯之前的過程,因此不需要我們添加一個; 在它的結尾。

在C ++中,它向我介紹了一個正在using的新指令,但是為什么該指令附加分號? 我以為就像前一個指令我學到的不是語句嗎?

using不是預處理程序指令。 它由編譯器適當地查看和分析。

你經常不放一個事實; #define宏的末尾是因為預處理器將它們作為“簡單”文本替換來處理,例如:

#define SOMETHING "abcd";

...
   if (strcmp(thing, SOMETHING) == 0) { ... }
...

將是編譯器錯誤,因為編譯器將看到:

   if (strcmp(thing, "abcd";) == 0) { ... }
                       //  ^ invalid here

可以認為using是一個聲明,例如typedef

並且您可以要求編譯器輸出預處理結果,例如使用g++ -C -E但是沒有簡單的方法要求編譯器輸出using的效果。

暫無
暫無

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

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