У меня проблема с проверкой параметров функции.В func (char * str) параметром могут быть три типа строк: 1. константная строка 2. строковый указатель на данные malloc 3. массив символов.Можно ограничить, чтобы функция c принимала только константную строку, например «1111»?
Я пытаюсь написать некоторый код, как показано ниже, но он не работает.
struct test{
const char *val;
};
void func(struct test *t, const char *rodata)
{
t->val = rodata;
}
Но я обнаружил, что не могу проверить, какие данные я передаю функции ():
/* Test: rodata don't free after function call, it can be the point to*/
func(t, "333");
printf("%s\n", t->val);
/* Test: C function can't check rw char array, even with const ...*/
char rwdata[] = "22222";
func(t, rwdata);
memset(rwdata, '9', sizeof(rwdata));
printf("%s\n", t->val);
/* Test: C function can't check malloc ?*/
char *rwdata2 = strdup("rodata2");
free(rwdata);
func(t, rwdata2); /* cause error */
printf("%s\n", t->val);
}