我偶然发现一个小问题,同时试图做出正确的代码。 我会喜欢写一个函数,它需要一个指向const结构的指针,告诉编译器“请告诉我,如果我正在修改结构,因为我真的不想”。 我突然想到,编译器会允许我这样做: struct A { char *ptrChar; }; void f(const struct A *ptrA) { ptrA->ptrChar[0] = 'A'; // NOT DESIRED!! } 这是可以理解的,因为实际上const是指针本身,而不是它指向的types。 我希望编译器告诉我,我正在做一些我不想做的事情,尽pipe如此,甚至有可能。 我使用gcc作为我的编译器。 虽然我知道上面的代码应该是合法的,但我仍然检查是否会发出警告,但没有任何结果。 我的命令是: gcc -std=c99 -Wall -Wextra -pedantic test.c 是否有可能解决这个问题?
0x0.3p10代表什么值? 在上面的陈述中p是什么意思?
我不明白为什么这样做是错误的: const int n = 5; int x[n] = { 1,1,3,4,5 }; 即使n已经是一个常量值。 虽然这样做似乎是正确的GNU编译器: const int n = 5; int x[n]; /*without initialization*/ 我知道C99的VLA特性,我认为它与发生的事情有关,但我只需要澄清一下在后台发生的事情。
我想了解什么^:const在clojure中做的。 这是开发者文档所说的。 http://dev.clojure.org/display/doc/1.3 (def常量{:pi 3.14:e 2.71}) (def ^:const pi(:pi常量))(def ^:const e(:e常量)) 查找的开销:在映射中的e和:pi在编译时发生,因为(:pi常量)和(:e常量)在评估它们的父级forms时被评估。 这是令人困惑的,因为元数据是用于绑定到符号pi的var,而绑定到符号e的var,但下面的语句表示它有助于加速地图查找,而不是var查找。 有人可以解释一下^:const在做什么以及使用它的原理吗? 这与使用巨let块或像(pi)和(e)这样的macros比较起来如何?
在Python中,是否有类似于C预处理器语句的模拟? #define MY_CONSTANT 50 另外,我有一大串常量,我想导入到几个类。 有没有类似于在.py文件中将常量声明为如上所述的长序列语句并将其导入到另一个.py文件? 编辑。 Constants.py文件显示如下: #!/usr/bin/env python # encoding: utf-8 """ Constants.py """ MY_CONSTANT_ONE = 50 MY_CONSTANT_TWO = 51 和myExample.py读取: #!/usr/bin/env python # encoding: utf-8 """ myExample.py """ import sys import os import Constants class myExample: def __init__(self): self.someValueOne = Constants.MY_CONSTANT_ONE + 1 self.someValueTwo = Constants.MY_CONSTANT_TWO + 1 if __name__ == '__main__': […]
我知道你可以使用const_cast将一个const转换为非const 。 但是,如果你想将非const为const你应该使用什么?
假设你在一个类中定义了一个常量: class Foo { const ERR_SOME_CONST = 6001; function bar() { $x = 6001; // need to get 'ERR_SOME_CONST' } } 用PHP可以吗?
是否有可能在C#中声明一个常量Guid? 我明白,我可以声明一个static readonly Guid ,但有没有一个语法,让我写const Guid ?
如果我在一个Perl模块中定义一个常量,我该如何在我的主程序中使用这个常量? (或者我怎样在主程序中调用这个常量?)
我有这个代码; using System; namespace Rapido { class Constants { public static const string FrameworkName = "Rapido Framework"; } } Visual Studio告诉我: The constant 'Rapido.Constants.FrameworkName' cannot be marked static 我怎样才能使这个常量从其他类可用,而无需创build一个新的实例呢? (即通过Rapido.Constants.FrameworkName直接访问它)