簡體   English   中英

c宏擴展錯誤

[英]Error With c Macro expansion

嗨,請找到以下簡單的宏代碼

#include <iostream>

#define INCL    #include

INCL <stdlib.h>

int main()
{
    std::cout << "Hello, world\n" << std::endl ;

    return 0;
}

當我編譯代碼時,它將引發錯誤:程序中出現流浪“#”

請幫忙。

謝謝

預處理器宏無法創建其他預處理器宏。 您在這方面很不走運。

但是,您可以使用宏作為include參數:

#define FOO(x) "/usr/lib/" #x
#include FOO(mylib.h)

C ++構建包括以下階段:

  1. 預處理(宏擴展)
  2. 編譯中
  3. 連結中

關鍵是您嘗試使用預處理器(第1階段)對其本身進行預處理,這將無法正常工作。 宏只能用於為編譯器生成代碼。 您不能將預處理器指令包裝到預處理器宏中。

暫無
暫無

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

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