c中的以下语法是什么?

时间:2011-03-19 06:04:01

标签: c

fd1 = open("/dev/test_kft" "1",00);

"/dev/test_kft" "1"是什么意思?

3 个答案:

答案 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将它放在堆上。隐式版本在编译时完成,如果可能,首选。