c - 使用 visual studio 2010 在 C 中使用宏的 switch 语句

标签 c visual-studio-2010 macros

我正在尝试做这样的事情

#define GETCART1 0;
#define GETCART2 1;

void helper(int *Array,int length,int counter, int option){
    if (length > counter){
        switch(option){
        case (GETCART1) :

            break;
        }//switch
    }
}

当我将 GETCART1 替换为 0 时出现编译错误,它工作正常。这是为什么?

最佳答案

从定义中删除分号。

#define GETCART1 0;
                  ^ Drop this

如果不这样做,在预处理器完成时,您的代码最终将如下所示:

switch(option){
case (0;) :
       ^
    break;
}

关于c - 使用 visual studio 2010 在 C 中使用宏的 switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8657061/

相关文章:

c++ - 如何以及在注册表中写入什么以在 Windows 启动时自动重启程序

c++ - 为什么 Visual Studio 会生成两个版本的 Obj?

c - 在子宏中替换父标记

macros - 有没有一种简单的方法可以查看 Elixir 宏扩展到的内容?

c - 是否可以在预处理时或编译时修改 "function call"

c++ - 是否可以使用 C++ 模板来控制代码生成?

c - 使用 Eclipse CDT 构建多模块 C 项目(即解决方案)

c - 在 Visual 项目中包含一个文件以便使用它

c - 我有一本学习套接字编程的好 ruby​​ 书吗?

c - 有符号加无符号时如何判断溢出