8得票2回答
为什么这个分离的定义会导致错误?

挑战: 我有一段无法编译的代码,你能找出问题吗?这曾经让我很头疼。 // header namespace values { extern std::string address; extern int port; } // .cpp file std::string ::va...

8得票2回答
如何在C语言中正确使用`typedef`来定义结构体?

我在很多C语言课程和例子中看到了许多不同的typedef用法。 以下是正确的做法(来自ISO/IEC C语言规范草案的示例) typedef struct tnode TNODE; struct tnode { int count; TNODE *left, *right...

20得票2回答
函数声明中的参数常量限定符

我在头文件中有以下函数声明:extern void flash(const char *message, const enum msg_type type); 基本上,它需要两个参数,并将相应的消息推入全局消息队列。 由于它不需要修改参数,因此我对它们进行了const限定。 然而,CLion的...

13得票3回答
C标准中关于可变类型的switch语句限制说明

我正在编写一个C编译器,当我来实现switch语句时,一条限制让我感到困惑。标准的6.8.4.2p2节规定: 如果switch语句中有与可变类型标识符的作用域相关联的case或default标签,则整个switch语句必须在该标识符的作用域内。 其中有一个脚注: 也就是说,声明要么...

110得票5回答
何时使用对象实例变量而不是将参数传递给方法

如何决定将参数传递给方法还是将它们声明为对象实例变量,这些变量对对象的所有方法都可见? 我更喜欢在类的最后将实例变量保存在列表中,但随着程序的增长,这个列表会变得越来越长。我想如果一个变量被经常传递,它应该只对需要它的所有方法可见,但是我也会想,“如果一切都是公开的,就根本不需要传递任何东西!”

8得票2回答
重新声明错误

我已经理解了声明和定义的区别,并且在练习一些问题时遇到了疑问,下面的代码要求我列出片段中的错误。 f(int a,int b) { int a; a=20; return a; } 为什么这会产生重复声明错误a?在以下情况下,不应该产生a的多个定义: ...

34得票3回答
C语言中允许重新定义,但是C++中不允许?

为什么这段代码在C中可以运行但在C++中却不行?int i = 5; int i; // but if I write int i = 5; again I get error in C also int main(){ // using i }

8得票5回答
如何最好地处理C++对象的初始化:使用空构造函数还是指针?

我想知道在涉及对象需要具有相对较大范围/长生命周期时,最好的对象初始化和存储方式是什么。比如说我们有一个GameEngine类,需要初始化并保存一个Window引用来进行渲染。该引用需要在程序的整个生命周期中使用,并且窗口至少需要知道其尺寸。 在Java中,我会像这样做: // Decla...

18得票6回答
CodeIgniter正确的方法检查库/助手/核心文件是否已加载

我正在使用CodeIgniter 2。 希望有人能展示以下文件正确的检查方式: - 检查库文件是否已加载? - 检查助手文件是否已加载? - 检查配置文件是否已加载? - 检查模型文件是否已加载? - 检查第三方文件是否已加载? 谢谢!

15得票2回答
声明一个无用的局部变量

这是一个有点奇怪的问题,我知道这段代码本身没什么用,但我想知道为什么会出现错误: 我在写一些代码,我写了这个:if(scan.hasNextInt()) int row = scan.nextInt(); 当时没有考虑变量作用域,显然这是无用的,因为我无法在 if 之后使用 row。...