鑑於comment:
我試圖做一個字符串,這將是一個文本文件的名稱。它將包含兩部分:(5000,6000,7000等)的數字和ARCHIVOMATRIZ
的文件名稱。我想做出這樣的文件名:5000matrizDiagonalDominante.txt
,6000MatrizDiagonalDominante.txt
等
正確的運營商使用的是「字符串化」操作,#
,而不是令牌連接符##
。
我想這你想要做什麼:
#define DIM 5000
#define ARCHIVOMATRIZ "matrizDiagonalDominante.txt"
#define STRINGIZE(x) #x
#define NAME_FROM_MACROS(x, y) STRINGIZE(x) y
#define ARCHIVODESTINO NAME_FROM_MACROS(DIM, ARCHIVOMATRIZ)
它依賴於 '字符串連接'。當兩個字符串文字彼此相鄰並且只有(可選的)空格分隔它們時,編譯器將它們組合爲單個字符串文字。
測試代碼:
#include <stdio.h>
#define DIM 5000
#define ARCHIVOMATRIZ "matrizDiagonalDominante.txt"
#define STRINGIZE(x) #x
#define NAME_FROM_MACROS(x, y) STRINGIZE(x) y
#define ARCHIVODESTINO NAME_FROM_MACROS(DIM, ARCHIVOMATRIZ)
int main(void)
{
printf("Archivo destino: %s\n", ARCHIVODESTINO);
return 0;
}
輸出:
Archivo destino: 5000matrizDiagonalDominante.txt
如果你想要的名稱各部分之間的下劃線,然後用:
#define NAME_FROM_MACROS(x, y) STRINGIZE(x) "_" y
等等
你想做什麼?作爲輸出你期望什麼?你不能用一個數字開始一個標識符;您通常使用'##'運算符使用宏參數。 –
嗨。我正在嘗試創建一個字符串,它將成爲文件文本的名稱。它將包含兩部分。一個DIM(5000,6000,7000等)和ARCHIVOMATRIZ文件的名稱。我想要使文件的名稱如:5000matrizDiagonalDominante.txt,6000MatrizDiagonalDominante等 – Patricio
請將該信息添加到問題中,您可以在其中格式化該問題。我還建議從你的問題中刪除註釋掉的代碼;這裏沒有任何用處。 –