c - 知道是否使用了 const 限定符

标签 c constants

在 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/

相关文章:

c - 声明和定义相互引用的初始化常量结构的最佳方法

c - 常量char指针是指向常量char的指针还是指向char的常量指针?

c++ - const 成员函数的语义是什么?

c - 按降序排列的数组在 C 中不起作用

c - C中是否可以确定64位数字的具体数字

c++ - GCC 5.2 cc1、cc1plus 错误

c - 查找最大数 (C) - 代码无效

c - Linux 内核中变量名后 *const* 的扭曲用法

c - 我该如何开始解决这个问题并修复我的代码?

c# - 虽然不可能创建常量属性,但有没有办法在使用常量字段时避免违反 DRY 规则?