fd1 = open("/dev/test_kft" "1",00);
"/dev/test_kft" "1"
是什么意思?
答案 0 :(得分:10)
它是由编译器执行的隐式连接。它会产生"/dev/test_kft1"
。
答案 1 :(得分:4)
预处理器连接相邻的字符串文字,因此该行与
相同 fd1 = open("/dev/test_kft1", 00);
答案 2 :(得分:1)
C中的显式形式是:
char part1[] = "/dev/test_kft";
char part2[] = "1";
char path[strlen(part1) + strlen(part2) + 1];
strcpy(path, part1);
strcat(path, part2);
这仍然没有复制“隐式”连接形式放置在rodata段中的事实。在我给出的例子中,它将在堆栈中。你可以用malloc将它放在堆上。隐式版本在编译时完成,如果可能,首选。