在 C 中有什么方法可以判断一个变量是否有 const 限定符?或者如果它存储在 .rodata 部分?
例如,如果我有这个功能:
void foo(char* myString) {...}
在这两个不同的函数调用中应该采取不同的操作:
char str[] = "abc";
foo(str);
foo("def");
在第一种情况下我可以修改字符串,在第二种情况下不能。
最佳答案
不在标准 C 中,即不可移植。
myString
只是 foo
中的一个 char*
,所有其他信息都丢失了。您输入函数的任何内容都会自动转换为 char*
。
并且 C 不知道“.rodata
”。
根据您的平台,您可以检查 myString
中的地址(如果您知道您的地址范围)。
关于c - 知道是否使用了 const 限定符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8151181/