簡體   English   中英

在代碼中訪問Makefile變量?

[英]Accessing Makefile variables in code?

最新進展

對不起,我忘了將此問題指定為Arduino問題。 我只是假設這是一個預處理程序問題,與在哪個平台上執行無關。

我正在使用Arduino-Make,並且試圖傳遞USERNAME和PASSWORD

BOARD_TAG    = mega2560
CPPFLAGS     = -DUSERNAME="$(USERNAME)" -DPASSWORD="$(PASSWORD)"
include $(ARDMK_DIR)/Arduino.mk

命令行:

make USERNAME="HELLO" PASSWORD="WORLD"

碼:

void setup() {
  Serial.begin(9600);

  String auth_raw2(USERNAME : PASSWORD);
  Serial.println(auth_raw2);
}


void loop() {}

我收到此錯誤:

macro.ino:10:29: error: found ‘:’ in nested-name-specifier, expected ‘::’
macro.ino:10:20: error: ‘HELLO’ has not been declared

你想要的是

String auth_raw( USERNAME ":" PASSWORD );

這將執行您要查找的正確的文字字符串連接。 編譯器會將相鄰的字符串文字一起運行為單個字符串。 所以如果你有

char a[] = "The " "quick" " brown " "fox";

它像對待您一樣對待它

char a[] = "The quick brown fox";

我不確定要在命令行上提供的值周圍加上“”。

根據Arduino網站的文獻

在構造函數中進行連接“會產生不可預測的結果,因為'auth_raw'在開始連接不同的數據類型之前從未獲得初始值。為了獲得最佳結果,請在連接字符串之前先對其進行初始化。”


就傳遞給makefile的變量而言,語法是正確的,並且定義這些變量的命令行-D也是有效的。 但是,正如文檔所指出的那樣,在傳遞給構造函數時,應避免混合使用整數和字符串,盡管先構造String然后再連接值是完全有效的。

暫無
暫無

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

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