假设我有一个函数dummy,带有2个参数.当函数调用中未提供时,参数可以具有默认值.但我怎么知道是不提供参数?
我知道我可以nargin像这样使用
function dummy(arg1, arg2)
if nargin < 2
arg2 = 0;
end
if nargin < 1
arg1 = 0;
end
% function body
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以根据参数名称检查是否提供了参数?有点像supplied(arg2) == false.
我问这个是因为,有时我想在参数列表的前面添加新参数(因为它可能没有默认值),然后我必须改变所有if nargin ....如果我可以按名称检查,则无需更改任何内容.
我正在使用g ++,它告诉我我_GNU_SOURCE在命令行上定义,但我没有.
我现在_GNU_SOURCE可以使用定义来启用gnu扩展,但现在我不想要这些扩展.我补充说-std=c++0x -pedantic,但_GNU_SOURCE仍然是定义.
输出g++ -v如下:
$ g++ -v
Using built-in specs.
COLLECT_GCC=/usr/bin/g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
Run Code Online (Sandbox Code Playgroud)
当我给它一个空文件并编译时g++ -E -dD -std=c++98 -pedantic empty.cpp,我得到这个:
$ g++ -E -dD -std=c++98 …Run Code Online (Sandbox Code Playgroud) 在以下程序中:
#include <iostream>
struct I {
int i;
I(){i=2;}
I(int _i){i=_i;}
};
int a[3] = {a[2] = 1};
int aa[3][3] = {aa[2][2] = 1};
I A[3] = {A[2].i = 1};
I AA[3][3] = {AA[2][2].i = 1};
int main(int argc, char **argv) {
for (int b : a) std::cout << b << ' ';
std::cout << '\n';
for (auto &bb : aa) for (auto &b : bb) std::cout << b << ' ';
std::cout << '\n';
for (auto &B : A) …Run Code Online (Sandbox Code Playgroud) 我正在读取c ++中的遗留代码,它定义了一个数组,然后分配给一个变量(见下文).虽然我过去使用过指针和引用,但我不确定这个表达式的含义.问题:
1.这个表达的含义是什么?
2.当(WORD*)中已经存在另一个指针时,为什么外部指针是必需的?
提前致谢 !
BYTE txbuf[16];
...
WORD crc = *((WORD*)(&txbuf[2]));
Run Code Online (Sandbox Code Playgroud)