我正在尝试实际使用 -Wall 并删除我当前程序中的所有警告。我知道这不是必需的,但它似乎没有什么坏处,也没有被证明太耗时。
我正在使用套接字在两个程序之间进行通信:一个在 C++11 中(带有 c 部分),另一个在 CUDA 中(因此 NVCC 作为编译器)。套接字的创建非常相似,为了防止出现警告,我编写了如下行:
#include<string.h>
extern char* strcpy(char*,const char*);
这个前向声明非常适合 gcc/g++ 以防止像这样的警告:
source.c:33:4: warning: implicit declaration of function ‘strcpy’ [-Wimplicit-function-declaration]
strcpy(saun.sun_path,CUDA_SOCKET_ADDR);
source.c:33:4: warning: incompatible implicit declaration of built-in function ‘strcpy’ [enabled by default]
但是,NVCC 程序上的相同代码会产生另一个警告:
CUDAsource.cuh(26): warning: allowing all exceptions is incompatible with previous function "strcpy"
/usr/include/string.h(129): here
是否需要在我的 makefile 中设置其他设置?目前C端有如下flags:
-g -O0 -Wall -std=c99
nvcc 有:
-g -G
如有任何提示,我们将不胜感激。
谢谢。
最佳答案
删除外部定义并向编译器标志添加 -D_GNU_SOURCE 解决了该问题。
关于c - NVCC:警告:允许所有异常与以前的功能不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24868575/