VC中的续行符,单斜杠"\"

本文解释了VC中单斜杠''作为续行符的用途,特别是在宏定义中的重要性。通过示例展示了如何使用续行符来提高代码的可读性和维护性。

http://blog.sina.com.cn/s/blog_69ebf25c0100kl0c.html

VC中的单斜杠"\"用在行末尾是什么意思?
C++ <wbr>续行符 悬赏分:10  解决时间:2009-4-11 20:11
VC中的单斜杠"\"用在行末尾是什么意思?
例如:
#define CODE_WORK  \
 index_check=toIndex(check);\
 if(next==target) return checkstep[index_check]+1;\
 index_next=toIndex(next);\ 
提问者:  wujianhao050  四级
最佳答案
这玩意儿有个正式的名称叫做续行符,在普通代码行后面加不加都一样(VC是自动判断续行的),但是在宏定义里面就特别有用,因为宏定义规定必须用一行完成:
#define SomeFun(x, a, b) if(x)x=a+b;else x=a-b;
这一行定义是没有问题的,但是这样代码很不容易被理解,以后维护起来麻烦,如果写成:
#define SomeFun(x, a, b)
    if (x)
        x = a + b;
    else
        x = a - b;
这样理解是好理解了,但是编译器会出错,因为它会认为#define SomeFun(x, a, b)是完整的一行,if (x)以及后面的语句与#define SomeFun(x, a, b)没有关系.这时候我们就必须使用这样的写法:
#define SomeFun(x, a, b)\
    if (x)\
        x = a + b;\
    else\
        x = a - b;
注意:最后一行不要加续行符啊.VC的预处理器在编译之前会自动将\与换行回车去掉,这样一来既不影响阅读,又不影响逻辑,皆大欢喜. 
:-1: error: LNK1181: 无法打开输入文件“INCLUDEPATH.obj” 下面是我的QT程序的pro文件 QT += core gui QMAKE_CC +=C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe QMAKE_CXX +=C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe greaterThan(QT_MAJOR_VERSION, 4): QT += widgets QT += serialport QT += serialbus INCLUDEPATH += $$QTDIR/include DEFINES += Q_BIG_ENDIAN=4321 Q_LITTLE_ENDIAN=1234 CONFIG += c++11 # The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \ ImageBuffer.cpp \ MvCamera.cpp \ countthread.cpp \ grabthread.cpp \ keyboard.cpp \ main.cpp \ plccontrol.cpp \ resourcethread.cpp \ setup.cpp \ testdata.cpp \ tipwidget1.cpp \ tipwidget2.cpp \ widget.cpp HEADERS += \ ImageBuffer.h \ MvCamera.h \ countthread.h \ grabthread.h \ keyboard.h \ plccontrol.h \ resourcethread.h \ setup.h \ testdata.h \ tipwidget1.h \ tipwidget2.h \ vikey_sdk/Vikey.h \ widget.h FORMS += \ keyboard.ui \ plccontrol.ui \ setup.ui \ tipwidget1.ui \ tipwidget2.ui \ widget.ui # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target #DESTDIR += bin #海康相机配置 LIBS += -L$$PWD/Hik_Libs \ -lMvCameraControl \ INCLUDEPATH += $$PWD/Hik_Includes DEPENDPATH += $$PWD/Hik_Includes ##OpenCV配置 # OPENCV = D:/Opencv4.0.1/opencv/build # LIBS += -LD:/Opencv4.0.1/opencv/build/x64/vc15/lib/-lopencv_world401d # LIBS += -LC:/Windows/SysWOW64/ -lgdi32 # LIBS += -lgdi32 # INCLUDEPATH += $$OPENCV/include # DEPENDPATH += $$OPENCV/x64/vc15/bin # OPENCV = D:/Opencv4.0.1/opencv/build # INCLUDEPATH += D:/Opencv4.0.1/opencv/build/include/ # D:/Opencv4.0.1/opencv/build/include/opencv2 # D:/Opencv4.0.1/opencv/build/include/opencv # LIBS += -LD:/Opencv4.0.1/opencv/build/x64/vc15/lib/-lopencv_world401d.lib # win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../D:/Opencv4.0.1/opencv/build/x64/vc15/lib/ -lopencv_world401 # else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../D:/Opencv4.0.1/opencv/build/x64/vc15/lib/ -lopencv_world401d # else:unix: LIBS += -L$$PWD/../../../../D:/Opencv4.0.1/opencv/build/x64/vc15/lib/ -lopencv_world401 # INCLUDEPATH += $$PWD/../../../../Opencv4.0.1/opencv/build/include # DEPENDPATH += $$PWD/../../../../Opencv4.0.1/opencv/build/include # *************************Qt配置Halcon***************************** # MacOS specific settings. Note that while dyld will search under # /Library/Frameworks by default, the preprocessor/compiler/linker will not # and need to be told explicitly. #macx { # QMAKE_CXXFLAGS += -F/Library/Frameworks # QMAKE_LFLAGS += -F/Library/Frameworks # LIBS += -framework HALCONCpp #} #else { # #defines # win32:DEFINES += WIN32 # #includes # INCLUDEPATH += "$$(HALCONROOT)/include" # INCLUDEPATH += "$$(HALCONROOT)/include/halconcpp" # #libs # QMAKE_LIBDIR += "$$(HALCONROOT)/lib/$$(HALCONARCH)" # unix:LIBS += -lhalconcpp -lhalcon -lXext -lX11 -ldl -lpthread # win32:LIBS += "$$(HALCONROOT)/lib/$$(HALCONARCH)/halconcpp.lib" \ # "$$(HALCONROOT)/lib/$$(HALCONARCH)/halcon.lib" #} #win32:CONFIG(release, debug|release): LIBS += -LD:/opencv/build/x64/vc16/lib/ -lopencv_world4100 #else:win32:CONFIG(debug, debug|release): LIBS += -LD:/opencv/build/x64/vc16/lib/ -lopencv_world4100d #INCLUDEPATH += D:/opencv/build/x64/vc16 #DEPENDPATH += D:/opencv/build/x64/vc16 ## Release mode #win32:CONFIG(release, debug|release): LIBS += -LD:/Opencv4.0.1/opencv/opencv_build/install/x64/vc15/lib/ -lopencv_world401 ## Debug mode #else:win32:CONFIG(debug, debug|release): LIBS += -LD:/Opencv4.0.1/opencv/opencv_build/install/x64/vc15/lib/ -lopencv_world401d ## Include path for header files #INCLUDEPATH += D:/Opencv4.0.1/opencv/opencv_build/install/x64/vc15/include #DEPENDPATH += D:/Opencv4.0.1/opencv/opencv_build/install/x64/vc15/include win32:CONFIG(release, debug|release): LIBS += -LD:/Opencv4.0.1/opencv/opencv_build/install/x64/vc15/lib/ -lopencv_world401 else:win32:CONFIG(debug, debug|release): LIBS += -LD:/Opencv4.0.1/opencv/opencv_build/install/x64/vc15/lib/ -lopencv_world401d else:unix: LIBS += -LD:/Opencv4.0.1/opencv/opencv_build/install/x64/vc15/lib/ -lopencv_world401 INCLUDEPATH += D:/Opencv4.0.1/opencv/opencv_build/install/x64/vc15 DEPENDPATH += D:/Opencv4.0.1/opencv/opencv_build/install/x64/vc15 INCLUDEPATH += "D:/Opencv4.0.1/opencv/build/include" LIBS += -L"D:/Opencv4.0.1/opencv/build/x64/vc15/lib" -lopencv_world401
最新发布
11-05
续行符是一种特殊字符,用于表示一行代码的延续,允许将一行较长的代码分成多行书写,以提高代码的可读性和可维护性。 ### 使用场景 - **代码过长**:当一行代码过长时,使用续行符可以将其拆分成多行,使代码更易阅读和理解。 - **提高可读性**:对于复杂的表达式或语句,将其分行书写可以让代码结构更加清晰。 ### 不同编程语言中的应用 #### Python 在 Python 中,反斜(`\`)是续行符。如果一行代码太长,可以使用反斜将其延续到下一行。 ```python long_string = "This is a very long string that " \ "is split into multiple lines for readability." print(long_string) ``` 此外,在括号(`()`)、方括号(`[]`)和花括号(`{}`)内的代码不需要使用反斜续行,Python 会自动将其视为一行。 ```python numbers = [ 1, 2, 3, 4, 5, 6 ] ``` #### Java Java 没有显式的续行符。但在字符串连接时,可以使用加号(`+`)将长字符串拆分成多行。 ```java public class Main { public static void main(String[] args) { String longString = "This is a very long string that " + "is split into multiple lines for readability."; System.out.println(longString); } } ``` #### C 和 C++ 在 C 和 C++ 中,反斜(`\`)是续行符。 ```c #include <stdio.h> int main() { int result = 1 + 2 + 3 \ + 4 + 5; printf("%d\n", result); return 0; } ``` #### JavaScript 在 JavaScript 中,反斜(`\`)是续行符。也可以使用加号(`+`)连接字符串实现多行书写。 ```javascript let longString = "This is a very long string that " + "is split into multiple lines for readability."; console.log(longString); ``` #### Ruby 在 Ruby 中,反斜(`\`)是续行符。 ```ruby long_string = "This is a very long string that " \ "is split into multiple lines for readability." puts long_string ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值