我想要做的是让string256像:char* s = (char*)malloc(256);
string256 s; /* this is what Iam trying to do */
char* s = (char*) malloc(256); /* this is how it looks in real life */
并使用它
strncpy(s, "__test__", 9)
s[9] = 0x00;
P.S。 typedef或定义或函数代码长度无关紧要。只关键字256; 我不会忘记使用免费或错误检查;
完整代码如下所示:
__Free_String_if_Flag_true __Zero_Memory __check_for_Errors __string_256 string256
并使用它
string256 s;
答案 0 :(得分:2)
简而言之,没有。
typedef定义类型的名称。 char* s = (char*) malloc(256);
是变量声明,而不是类型。
你可能会用宏来实现类似的东西,但我强烈反对它(一开始,它会掩盖在某些时候需要free
的事实。)
答案 1 :(得分:2)
您可以创建一个char数组的typedef:
typedef char char256[256];
char256 s ;
s[255] = '\0' ;
变量将在超出范围时停止存在,但如果您希望持久化,则可以将其设置为全局变量。
答案 2 :(得分:0)
关于 ...或定义... 的问题部分:
简而言之 - 是的,您可以 :(部分取消其他一些评论/答案的例外)
然而 ,我也同意那些表明使用#defines进行此类调用的最佳形式的答案。 (但你可以这样做)
已修改 (已从宏中删除“;”)
#define string256(s) char *(s) = malloc(256)
//...
string256(s); //use parenethesis
/...
strcpy(s, "yes I can");
s 现在包含“是的我可以” 和 是空终止的(strcpy()
那个)
不要忘记为free(...);