如何注释掉嵌套在其中的注释的代码部分?

问题描述 投票:0回答:4

我正在寻找在 C++ 中注释掉多行(而不是方法)的最佳方法,其中有注释。我确实查看了一些关于 SO 的帖子,但无法获得有关使用 if #0 之类的内容的

完整
详细信息。

我确实查看了这篇文章Visual C++ 中的嵌套注释?但我不在 Windows 平台上。

c++ comments c-preprocessor
4个回答
19
投票

你几乎是正确的;本质上,建议将代码部分“if-def”出来。您想要做的是使用预编译器指令

#if
来为您阻止代码。下面的例子表明我想忽略 if 和 endif 之间的所有内容。

#if 0
/* Giant comment
 it doesn't matter what I put here */

// it will be ignored forever.
#endif

总体回答你的问题;没有办法进行复合评论,即

/* 
  /* */ <--- this closes the first /* 
*/ <--- this dangles.

3
投票

#if 0
#endif
之间的内容将被编译器忽略。 (你的预处理器实际上可能会在“编译器”查看它之前将其删除!)

#if 0

    /* 42 is the answer. */

    Have you tried jQuery?

    @Compiler Stop ignoring me!!

#endif

如果您使用

#ifdef
s,您将拥有更好的控制:

// #define DEBUG


#ifdef DEBUG
   MyFunction();
   std::cout << "DEBUG is defined!";
#endif


// Later in your code...

#ifdef DEBUG
    std::cout << "DEBUG is still defined!";
#endif

只需取消注释第一行,您的

#ifdef DEBUG
代码就会突然对编译器可见。


附注这应该可以消除更多的混乱:

/*
    cout << "a";
    /*
        cout << "b";
    */
    cout << "c";
*/

输出应该是

"c"
,假设你的编译器没有给你最后一个
*/
任何错误。


3
投票

使用编辑器提供的任何方式在所有行的开头添加

//

例如,在 Vim 中,您可以将行标记为可视块,然后使用

I//
在所有行的开头插入。在 Visual Studio 中,您可以使用
CTRL-K-C
快捷方式来注释代码块。


1
投票

假设您使用 Visual Studio 的另一条途径是有一个方便的键盘快捷键来注释所有当前选定的代码,在每行之前添加

//
CTRL+K
+
CTRL+C
发表评论,
CTRL+K
+
CTRL+U
取消评论。

© www.soinside.com 2019 - 2024. All rights reserved.